我正在使用节点包'csv',我在包中最明显的用例中遇到了一个问题,我不知道如何继续。套餐回购:https://github.com/wdavidw/node-csv
我需要, 1:读入csv文件,并为每一行执行单个运算符。 2:读取完整个csv文件后,执行操作并将结果写入新的csv文件。
我被困在第一部分。这是我将一堆(看似不一致的)示例连接在一起后的内容。
var fs = require('fs');
var csv = require('csv');
var transform = require('stream-transform');
var outputMap = {};
var baseStream = fs.createReadStream(__dirname + '/locationTaxonomy.csv');
baseStream
.pipe(csv.parse())
.pipe(csv.transform(function(record){
outputMap[record[2]] = record;
return record;
}));
前面的内容只能通过csv文件的前16行,然后停止。 如果我将baseStream直接传递给process.stdout,则在完成时读取该文件。关于如何完成这个看似微不足道的任务的任何想法?
答案 0 :(得分:3)
转换流处理程序中的return语句导致流停止。 删除它允许读取完整的csv文件
var fs = require('fs');
var csv = require('csv');
var transform = require('stream-transform');
var outputMap = {};
var baseStream = fs.createReadStream(__dirname + '/locationTaxonomy.csv');
baseStream
.pipe(csv.parse())
.pipe(csv.transform(function(record){
outputMap[record[2]] = record;
// return record; // remove this line
}));