0

I am having a csv file where i need to get data of each row and conver it to json and send to a server so i am using "fast-csv"cfor converting to Json and

there is another requirement that when ever the file is updated with new data i need to convert the newdata updated in the file to json and send to server so i am using tail-stream

when i use both of them to get my work done i am using below code but i am getting

error

data.pipe(csvStream); ^ TypeError: undefined is not a function

My code:

var ts = require('tail-stream');
 var csv = require("fast-csv");
var tstream = ts.createReadStream('test.csv', {
    beginAt: 0,
    onMove: 'follow',
    detectTruncate: false,
    onTruncate: 'end',
    endOnError: false
});

tstream.on('data', function(data) {
    //console.log("got data: " + data);
    console.log('inside\n');

    var csvStream = csv()
    .on("data", function(data){
         console.log(data);
    })
    .on("end", function(){
         console.log("done");
    });

            data.pipe(csvStream);

});

tstream.on('eof', function() {
    console.log("reached end of file");
});

tstream.on('move', function(oldpath, newpath) {
    console.log("file moved from: " + oldpath + " to " + newpath);
});

tstream.on('truncate', function(newsize, oldsize) {
    console.log("file truncated from: " + oldsize + " to " + newsize);
});

tstream.on('end', function() {
    console.log("ended");
});

tstream.on('error', function(err) {
    console.log("error: " + err); 
});

1 Answer 1

1

data is not a stream. You can't use pipe() on it. I think, the correct way is this :

var ts = require('tail-stream');
var csv = require("fast-csv");
var tstream = ts.createReadStream('test.csv', {
    beginAt: 0,
    onMove: 'follow',
    detectTruncate: false,
    onTruncate: 'end',
    endOnError: false
});
var csvStream = csv()
.on("data", function(data){
     console.log(data);
})
.on("end", function(){
     console.log("done");
});
tstream.on('eof', function() {
    console.log("reached end of file");
});
tstream.on('move', function(oldpath, newpath) {
    console.log("file moved from: " + oldpath + " to " + newpath);
});
tstream.on('truncate', function(newsize, oldsize) {
    console.log("file truncated from: " + oldsize + " to " + newsize);
});

tstream.pipe(csvStream);
Sign up to request clarification or add additional context in comments.

1 Comment

its reverse tstream.pipe(csvStream);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.