Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.JS转换流-数据丢失_Node.js_Stream_Buffer - Fatal编程技术网

Node.JS转换流-数据丢失

Node.JS转换流-数据丢失,node.js,stream,buffer,Node.js,Stream,Buffer,我的代码有一些流问题,我不知道如何修复 代码摘录: 本质上,我在父转换流中有两个转换流,但是我在传递数据时遇到了问题,因为我在第一个流(S0)上使用push,而第一个流(S0)没有被转换,因此只是将数据直接推送到第二个流(S1),并导致错误。通常我会使用.pipe()来连接流,但我看不到如何从转换流内部进行连接,因为我想要管道化输入,而不是输出,\u transform函数只提供一个块(缓冲区)作为参数 有什么办法可以这样做吗?来自push文档: 注意:这个函数应该由可读的实现者调用,而不是由可

我的代码有一些流问题,我不知道如何修复

代码摘录:

本质上,我在父转换流中有两个转换流,但是我在传递数据时遇到了问题,因为我在第一个流(S0)上使用push,而第一个流(S0)没有被转换,因此只是将数据直接推送到第二个流(S1),并导致错误。通常我会使用
.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”