probably you should use https://github.com/dominictarr/split instead of
readline, because readline is designed with cli-dialogs in mind. with split
your application could be like this (example):
var instream = fs.createReadStream(pathLog+req.params.file);
var trans = new require('stream').Transform({objectMode: true})
trans._transform = function( chunk, encoding, callback){
// do something here with the chunk, which is a line
// when done, push it
this.push(chunk)
callback()
}
//outstream can be another file or the response object
instream.pipe(split).pipe(trans).pipe(outstream)
Am Freitag, 17. Januar 2014 17:54:28 UTC+1 schrieb Felipe Silveira:
>
> Thank you more one time, worked fine.
> Do you have examples the better way to generate the csv like you told
> using output stream?
>
> Em sexta-feira, 17 de janeiro de 2014 14h36min34s UTC-2, willem dhaeseleer
> escreveu:
>>
>> Like documented here:
>> http://nodejs.org/api/readline.html#readline_event_close
>>
>> You need to wait for the close event, in just the same way you wait for
>> the 'line' event.
>>
>> Of Course i can't guarantee if this is going to work. I'm not sure if
>> your code inside your line handler is going to be any good.
>> I added a *console.log* there as well so that you can see what gets
>> added, but you should remove that once everything works.
>>
>> And of course, instead of building up your csv file into 1 variable, you
>> should write through to an actual output stream so that your memory doesn't
>> skyrocket. Taking that into account I'm not sure if readline is the best
>> way to do this, since it will might be cumbersome to integrate it into a
>> backpressured <http://blog.nodejs.org/2012/12/20/streams2/> pipeline. I
>> think this is because readline is more for terminal interaction than just
>> trivial line splitting. ( I could be wrong on that, anyone ?)
>>
>>
>> On 17 January 2014 16:07, Felipe Silveira <[email protected]> wrote:
>>
>>> Willem,
>>>
>>> Thank you for help, sorry but I'm beginner and still do not understand
>>> some things, like how I'll wait for the event line finish and so run
>>> the console.log?
>>> I changed the code to this, its correct?
>>>
>>> var csv;
>>> var instream = fs.createReadStream(pathLog+req.params.file);
>>> var outstream = new stream;
>>> outstream.readable = true;
>>> outstream.writable = true;
>>> var rl = readline.createInterface({
>>> input: instream,
>>> output: outstream,
>>> terminal: false
>>> });
>>>
>>> rl.on('line', function(lin) {
>>> if(req.params.id != ''){
>>> var re = new RegExp(req.params.id, 'i');
>>> if(lin.match(re) != null){
>>> var string = lin.substring(143,lin.length);
>>>
>> * console.log('Adding Line', string);*
>>
>>> csv += ','+string;
>>> }
>>> }
>>> });
>>> res.set('Content-Type', 'application/octet-stream');
>>>
>>>
>> *rl.on('close', function() {*
>> * console.log('TOTAL CSV', csv);*
>> * })*
>>
>>
>>> //res.send(exports.csv);
>>> });
>>>
>>> Em sexta-feira, 17 de janeiro de 2014 10h23min26s UTC-2, Felipe Silveira
>>> escreveu:
>>>>
>>>> Hi everyone,
>>>>
>>>> I'm a newbie in nodejs and express, so i'm trying to generate one CSV
>>>> file reading a content of one log file, something like this:
>>>>
>>>> var csv;
>>>> var instream = fs.createReadStream(pathLog+req.params.file);
>>>> var outstream = new stream;
>>>> outstream.readable = true;
>>>> outstream.writable = true;
>>>> var rl = readline.createInterface({
>>>> input: instream,
>>>> output: outstream,
>>>> terminal: false
>>>> });
>>>>
>>>> rl.on('line', function(lin,csv) {
>>>> var csv;
>>>> if(req.params.id != ''){
>>>> var re = new RegExp(req.params.id, 'i');
>>>>
>>>> if(lin.match(re) != null){
>>>> var string = lin.substring(143,lin.length);
>>>> csv += ','+string;
>>>> }
>>>> }
>>>> });
>>>> res.set('Content-Type', 'application/octet-stream');
>>>> console.log(csv);
>>>>
>>>>
>>>> The real problem is, I declared the variable csv and in the event line
>>>> I'm incrementing that but in the console.log return undefined.
>>>>
>>>> Thank you!
>>>>
>>>>
>>>> *Att,*
>>>>
>>>> *Felipe Silveira Mendes*Site <http://felipems.com.br> -
>>>> Twitter<https://twitter.com/felipesmendes>-
>>>> Blog <http://felipems.com.br/blog>
>>>> *Web Developer*
>>>> *(31) 8370-9090 (Claro)*
>>>> *(31) 9433-9310 (Tim)*
>>>> *[email protected]*
>>>>
>>>>
>>>> --
>>> --
>>> Job Board: http://jobs.nodejs.org/
>>> Posting guidelines:
>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>>> You received this message because you are subscribed to the Google
>>> Groups "nodejs" group.
>>> To post to this group, send email to [email protected]
>>> To unsubscribe from this group, send email to
>>> [email protected]
>>> For more options, visit this group at
>>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>>
>>> ---
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "nodejs" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/nodejs/qQ6prse3r0c/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>
--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.