在Node中的管道内链接管道的正确方法是什么?

时间:2018-12-14 20:58:17

标签: node.js stream

我有一个函数可以返回一个或多个通过管道传输的流,再返回到将流链接在一起的主函数:

function streamBuilder(){
     const csvStream = require('fast-csv').createWriteStream();
     const fsStream = fs.createWriteStream('file.csv');
     return csvStream.pipe(fsStream);
}

const dbStream = db.collection('huge').find();
const streams = streamBuilder();
dbStream.pipe(streams);

不幸的是,它不起作用。

结果是,显然从未调用CSV流csvStream.transform(),仅调用了文件写入流fileStream.transform(),错误的块参数无效。

如果我改为这样做,它将起作用:

function streamBuilder(){
     const csvStream = require('fast-csv').createWriteStream();
     const fsStream = fs.createWriteStream('file.csv');
     return csvStream.on('data', chunk => fsStream.write(chunk));
}

但是,如果感觉不对...在嵌套时,必须有一种方法可以链接流管道(即streamA.pipe(streamB.pipe(streamC)))。有没有办法我可以不用.on('data'...)就将它们链接起来,又不用将输入流作为参数发送到streamBuilder()函数中呢?

0 个答案:

没有答案