如何在带有流的节点中解析CSV



我有以下解析器:

函数分析器(选项){options=选项||{};//options.objectMode=true;options.encoding='utf8';Transform.call(this,options);这个_rawHeader=[];this.header=null;}util.inherits(Parser,Transform);Parser.prototype._transform=函数(数据,编码,完成){this.push(this._parseRow(data));done();};//将数据行解析为对象Parser.prototype_parseRow=函数(行){var fields=行.split(";");var obj={code:fields[0],name:fields[1].trim()};return obj.toString();};var parser=新的parser({});//用管道输送溪流进程.stdin.pipe(解析程序).pipe(process.stdout)

但是,我得到:

ACARIT2012;CASSA RURA没有"拆分"方法在Parser_parseRow(/Users/pmu/projects/b/s/lib/parser.js:38:20)在Parser_transform(/Users/pmu/projects/b/s/lib/parser.js:32:18)位于Parser.Transform.read(_stream_Transform.js:179:10)位于Parser.Transform.write(_stream_Transform.js:167:12)在doWrite(_stream_writable.js:219:10)在writeOrBuffer(_stream_writeable.js:209:5)在Parser.Writable.write(_stream_Writable.js:180:11)写入时(_stream_readable.js:573:24)流量(_stream_readable.js:582:7)在Socket.pipeOnReadable(_stream_readable.js:614:5)

我怀疑流被破坏了,但不知道如何防止这种情况发生

传递给Readable流的数据是Buffer对象,而不是StringBuffer没有split方法。必须对数据手动调用toString(),才能将其作为String进行操作。

Parser.prototype._transform = function(data, encoding, done) {
this.push(this._parseRow(data.toString()));
done();
};

相关内容

  • 没有找到相关文章

最新更新