我正在尝试查找CSV分析程序库或流转换库和CSV分析程序的组合,以便我根据请求(暂停和恢复)获取行。我已经找到了一些逐行读取流的例子,但是那些通常处理纯文本而不是CSV格式,所以除了自己编写CSV解析器之外,我无法用这些例子确定正确的行动方案。
对此的需求来自我正在创建的伪缓冲区,我需要以一种滚动的方式发送数据和接收回调数据。例如,如果我逐行读取csv数据的100行并通过HTTP请求发送,我希望能够暂停进入的记录流,直到其中一个返回回调数据,然后我想取消暂停流,并且只拉一条记录来替换收到回调的记录。
它有点令人费解,所以如果我需要更好地解释,请告诉我。
答案 0 :(得分:0)
csv
模块可以执行此操作。他们的examples page有这个简单的异步示例,其中包含您可以用作起点的流:
var csv = require('csv');
var generator = csv.generate({seed: 1, columns: 2, length: 20});
var parser = csv.parse();
var transformer = csv.transform(function(data){
return data.map(function(value){return value.toUpperCase()});
});
var stringifier = csv.stringify();
generator.on('readable', function(){
while(data = generator.read()){
parser.write(data);
}
});
parser.on('readable', function(){
while(data = parser.read()){
transformer.write(data);
}
});
transformer.on('readable', function(){
while(data = transformer.read()){
stringifier.write(data);
}
});
stringifier.on('readable', function(){
while(data = stringifier.read()){
process.stdout.write(data);
}
});