从另一个流创建流并加入node.js中的两个流

时间:2015-07-06 04:23:50

标签: node.js stream

我遇到处理多个流的问题。 考虑这种情况,我有data.csv文件,其内容是

id,val
1,100
2,75

我想生成这样的输出,一半应该是val的50%,我们需要追加相同的行但是乘以10.

id,val,half
1,100,50
2,75,37.5
10,100,500
20,75,37.5

我成功从文件中读取csv,转换并处理它。我只能生成1个流。多数民众赞成,在开始时只有2行,所以我的输出也包含2行。我能够产生这样的结果

id,val,half
1,100,50
2,75,37.5

但无法添加额外的部分。这是整个内容乘以10。

一个解决方案非常简单,读取文件中的内容,以javascript数组/对象格式,处理它并写入磁盘。这不涉及管道。 我想用管道来写整件事。

我已经有类似的代码了。

// Initialize file streams where the output will be written to
const forecastcsv = fs.createWriteStream(forecastfile);
fs.createReadStream(argv.file).pipe(parser).pipe(transformer).pipe(stringifier).pipe(forecastcsv);

无法想到我如何创建两个流(一个是做一半,另一个是乘以10)加入它们以在最终的csv文件中实现双行。

由于

1 个答案:

答案 0 :(得分:1)

谢谢@Chris Anderson-MSFT 我对1:1有误解,我们可以发出更多的数据,所以这是我的变压器正在工作。不需要多个流。

var transformer = csv.transform(function (record, callback) {
    record.half = record.value/2;
    var extra = JSON.parse(JSON.stringify(record));
    extra.id = extra.id * 10;
    extra.value = extra.value * 10;
    extra.half = extra.half * 10;
    callback.call(this, null, record, extra); 
});