我正在尝试使用 NodeJS 流替换 ETL 过程。我尝试编写的转换流采用数据集,并根据配置数据,为每个输入的记录输出一条或多条记录。换句话说,如果读取 100000 条记录,则转换最终可能会写入 100000 到 400000 条记录。 _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
关于javascript - 如何在 NodeJS 中创建一对多转换流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73377914/