我有一个可读的流,它给了我对象:
const readable = getReadableStream();
我可以将可读的管道传输到转换流中:
const t = new Transform({
objectMode: true,
transform(chunk, encoding, cb) {
this.push(chunk);
cb();
},
flush(cb) {
cb();
}
});
readable.pipe(t);
readable.push({some:'object'});
问题是我收到此错误:
TypeError [ERR_INVALID_ARG_TYPE]:“块”参数必须是字符串或缓冲区类型之一。在 Transform.ondata (_stream_readable.js:642:20) 在 Transform.emit (events.js:159:13) 的 WriteStream.Socket.write (net.js:705:11) 接收到类型对象
我认为正在发生的事情是在转换流中,当transform()
被调用时,第一个参数(块)必须是字符串或缓冲区。
但是,我知道我可以打电话
this.push({foo:'bar'})
在转换方法中......只有传入的数据似乎被限制为字符串或缓冲区......
我的问题分为两部分:
有没有办法创建一个可以传递对象的转换流,而不仅仅是字符串或缓冲区?
如果 1 的答案是“否”,那么在转换流中将 JS 对象转换为 JSON 的可靠方法是什么?
可能会丢失一些调用,以便它接收对象而不是字符串。