Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Node.js按需解析记录?_Javascript_Node.js_Csv - Fatal编程技术网

Javascript 如何使用Node.js按需解析记录?

Javascript 如何使用Node.js按需解析记录?,javascript,node.js,csv,Javascript,Node.js,Csv,是否有一个节点模块可以解析CSV文件中特定数量的记录?用例是解析一个大的日志文件,并根据请求将记录传递给分页客户机 无法做到这一点,而我发现最接近的是,这需要重新发明CSV解析轮,并且会破坏多行记录 但让我们降低门槛:如何使用Node.js逐个解析单行CSV记录?在大多数其他语言中,这是一项非常简单的任务。解析单个“行”(也可以有嵌入的换行符): 我不知道你所说的“CSV文件中特定数量的记录”是什么意思,也不知道问题到底是什么。一旦您读取了所需的金额,只需将响应发送回客户,您就完成了 编辑:如果

是否有一个节点模块可以解析CSV文件中特定数量的记录?用例是解析一个大的日志文件,并根据请求将记录传递给分页客户机

无法做到这一点,而我发现最接近的是,这需要重新发明CSV解析轮,并且会破坏多行记录

但让我们降低门槛:如何使用Node.js逐个解析单行CSV记录?在大多数其他语言中,这是一项非常简单的任务。

解析单个“行”(也可以有嵌入的换行符):

我不知道你所说的“CSV文件中特定数量的记录”是什么意思,也不知道问题到底是什么。一旦您读取了所需的金额,只需将响应发送回客户,您就完成了

编辑:如果要实现分页,也可以使用:

var csv=require('csv');
var-skip=100;
var限值=10;
csv()
.from.path('file.csv')
.on('record',函数(行,索引){
如果(索引>=跳过和索引<(跳过+限制))
console.log('R',索引);
});

据我所知,您只想将逗号分隔的值行解析为数组?如果是,请尝试以下方法:


你应该考虑写一个:你说的“单行CSV记录”是什么意思?因为很明显,这不仅仅是一行,因为我的回答被否决了。@Slavo:不知道是谁否决了你的答案(不是我)。所谓“单行CSV记录”,我指的是逗号分隔的元组,在任何字段中都没有换行符。与中一样,CSV数据的常规类型。我似乎在解析示例代码时遇到问题。如何读取“CSV的单行”,从而嵌入换行符?如何定义
csv
功能?“特定数量的记录”,我的意思是从CSV文件中同步读取N条记录,而不是在内存中解析整个文件,然后选择所需的记录。@DanDascalescu抱歉,您降低了条:)示例代码解析单行CSV记录(您可以多次调用它以实现“逐个”功能)。你没有提到他们应该从哪里来。而
csv
节点csv
。也许你应该把你的问题说得更清楚,因为每个人似乎都没能实现你的意图。。。
var csv = require('csv'); // node-csv

csv()
  .from.string(SINGLE_LINE_OF_CSV)
  .to.array(function(record) {
    console.log('R', record);
  });
var csv   = require('csv');
var skip  = 100;
var limit = 10;

csv()
  .from.path('file.csv')
  .on('record', function(row, index) {
    if (index >= skip && index < (skip + limit))
      console.log('R', index);
  });