我有一个函数可以返回一个或多个通过管道传输的流,再返回到将流链接在一起的主函数:
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()
函数中呢?