将WriteStream转换为TransformStream

时间:2017-07-10 19:41:58

标签: node.js stream through2

我有一个(有点奇怪的)可写流,我需要转换为转换流。

可写流通常位于管道链的末端,一旦为其输出收集了足够的数据,就会发出自定义事件。我希望它在中间,所以我可以将它传递给另一个writeStream,即:

company

我做的是以下内容并且有效。

    readStream.pipe(writeStreamToConvert).pipe(finalWriteStream);

这样工作正常,似乎没有泄漏内存并且相当快。但是节点给了我一个警告:

    const through2 = require('through2')


    var writeStreamToConvert = new WriteStreamToConvert();

    return through2.obj(function (chunk, enc, callback) {

        writeStreamToConvert.write(chunk)

        // object is the event emitted from the writestream
        writeStreamToConvert.on('object', (name, obj ) => {
            this.push(JSON.stringify(obj, null, 4) + '\n')
        });            

        callback()
    })

所以如果这是转换写入流的正确方法,我有点好奇吗?

1 个答案:

答案 0 :(得分:0)

事件处理程序最好放在Transform流构造函数中。由于through2不支持此类初始化,因此您需要直接使用节点的流API。

目前,正在为写入.on()流的每个对象添加一个新的事件处理程序(永远不会删除 - 这就是through2的工作方式)。这就是警告发生的原因。