如何在NodeJS中创建一对多转换流



我正在尝试使用NodeJS流替换ETL进程。我试图在数据集中编写的Transform流,基于配置数据,将为每个输入的记录输出一个或多个记录。换句话说,如果它读取了100000条记录,那么转换最终可能会写入100000-40000条记录。_transform方法只允许调用它的回调一次,所以我试图弄清楚如何为每个输入对象输出多个对象。

我看了双工器,但我看到的每个例子都将其用作双向流,而我肯定希望我的流是单向的(或者我可能只是不明白它们是如何工作的(。有人对如何实现这一点有什么建议吗?

回调只能调用一次,但.push方法是发出数据的方法,并且可以在_transform方法中根据需要调用多次。示例:

class MyTransform extends Transform {
_transform(chunk, enc, next) {
const arrayFromChunk = chunk.split(',');
arrayFromChunk.forEach(piece => {
// this.push is what will emit readable data, can be called as often
// as needed.
this.push(piece); 
});
next(); // next can only be called once.
}
}

此处的文档:https://nodejs.org/docs/latest-v18.x/api/stream.html#stream_implementing_a_transform_stream

最新更新