异步流式传输的节点 CSV 解析器,逐行读取并具有暂停和恢复流的能力

Node CSV Parser that streams asynchronously, reads line by line and has the ability to pause and resume stream

我正试图找到一个 CSV 解析器库或流转换库和 CSV 解析器的组合,它允许我根据请求(暂停和恢复)获取行。我找到了一些逐行读取流的示例,但是这些示例通常处理纯文本而不是 CSV 格式,因此除了自己编写 CSV 解析器之外,我无法通过这些示例确定正确的操作过程。

对此的需求以我正在创建的伪缓冲区的形式出现,我需要在其中以一种滚动的方式发送数据和接收回调数据。例如,如果我逐行提取 100 行 csv 数据记录并通过 HTTP 请求发送,我希望能够暂停进入的记录流,直到 100 returns 回调数据之一,然后我想取消暂停流,并只拉取一条记录来替换收到回调的记录。

它有点令人费解,所以如果我需要更好地解释,请告诉我。

csv module can do this. Their 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);
  }
});