Node.JS转换流-数据丢失
我的代码有一些流问题,我不知道如何修复 代码摘录: 本质上,我在父转换流中有两个转换流,但是我在传递数据时遇到了问题,因为我在第一个流(S0)上使用push,而第一个流(S0)没有被转换,因此只是将数据直接推送到第二个流(S1),并导致错误。通常我会使用Node.JS转换流-数据丢失,node.js,stream,buffer,Node.js,Stream,Buffer,我的代码有一些流问题,我不知道如何修复 代码摘录: 本质上,我在父转换流中有两个转换流,但是我在传递数据时遇到了问题,因为我在第一个流(S0)上使用push,而第一个流(S0)没有被转换,因此只是将数据直接推送到第二个流(S1),并导致错误。通常我会使用.pipe()来连接流,但我看不到如何从转换流内部进行连接,因为我想要管道化输入,而不是输出,\u transform函数只提供一个块(缓冲区)作为参数 有什么办法可以这样做吗?来自push文档: 注意:这个函数应该由可读的实现者调用,而不是由可
.pipe()
来连接流,但我看不到如何从转换流内部进行连接,因为我想要管道化输入,而不是输出,\u transform
函数只提供一个块(缓冲区)作为参数
有什么办法可以这样做吗?来自
push
文档:
注意:这个函数应该由可读的实现者调用,而不是由可读流的使用者调用
由于在
ParserStream
的实现中没有调用它,因此不应该调用\u s0Stream.push
,应该执行\u s0Stream.write
。在这种情况下,您可能也想传递done
回调。您需要一起收集块
var data='', tstream = new stream.Transform();
tstream._transform = function (chunk, encoding, done) {
data += chunk.toString();
done();
};
然后重新分配_flush函数:
tstream._flush = function (done) {
data += 'hola muheres';
this.push(data);
done();
};
因此,总而言之:
req.pipe(anotherstream).pipe(tstream).pipe(response);
=>“某些数据”
=>“somedatahola muheres”