我遇到处理多个流的问题。 考虑这种情况,我有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文件中实现双行。
由于
答案 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);
});