用CSV写节点js的匹配行

我正在与node js婴儿的步骤。 第一个任务,逐行阅读一个分隔的文件,并吐出包含string“imputed”的行。

 #!/usr/bin/env node var Csv = require("csv"), Fs = require("fs"); var foods = "/../data/sr26"; Csv() .from.stream( Fs.createReadStream(__dirname + foods + "/SRC_CD.txt"), {"delimiter": "^", "quote": "~"} ) .to(function(data, count) { console.log(data); }) .transform(function(row, index, callback) { //if (row[1].search(/imputed/) != -1) { process.nextTick(function() { callback( null, row[1].substr(0, 15) + "… " + row[1].search(/imputed/) + "\n" ) }); //} }); 

打印出来

 Analytical or d… -1 Calculated or i… 14 Value manufactu… -1 Aggregated data… -1 Assumed zero… -1 Calculated from… -1 Calculated by m… -1 Aggregated data… -1 Manufacturer's … -1 Analytical data… -1 

但是,将内部transform的比较注释掉根本就没有输出。 我究竟做错了什么?

当asynchronous使用csv转换方法时 ,您必须调用callback
如果你用null调用它,logging将被简单地跳过。

 if (row[1].search(/imputed/) != -1) { process.nextTick(function() { callback( null, row[1].substr(0, 15) + "… " + row[1].search(/imputed/) + "\n" ) }); } else { callback(null, null); }