Node.JS转换流-数据丢失



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

代码节选:http://gist.github.com/5689522

基本上,我在父转换流中有几个转换流,但我有问题沿着数据传递,因为我在第一个流(S0)上使用未被转换的推送,因此只是将数据直接放置到第二个流(S1),并导致错误。通常我会使用.pipe()来连接流,但我看不出如何从转换流内部做到这一点,因为我想要管道输入,而不是输出,_transform函数只给出一个块(缓冲区)作为参数。

有什么办法吗?

你需要把数据块收集在一起

var data='', tstream = new stream.Transform();
tstream._transform = function (chunk, encoding, done) {
    data += chunk.toString();
    done();
};

then reassign _flush function:

tstream._flush = function (done) {
    data += 'hola muheres';
    this.push(data);
    done();
};

so all together:

req.pipe(anotherstream).pipe(tstream).pipe(response);

=比;"somedata"=比;"somedatahola muheres"

来自push的文档:

注意:这个函数应该由可读的实现者调用,而不是可读流的消费者。

因为你没有调用ParserStream的实现,你不应该调用_s0Stream.push,你应该做_s0Stream.write。在这种情况下,你可能也想传递你的done回调。

相关内容

  • 没有找到相关文章

最新更新