如何读取节点js中的csv文件

我正在尝试使用节点js读取一个csv文件。 她是我的代码

fs.readFile(config.csvUploadPath, function read(err, data) { if (err) { throw err; } console.log(data + 'my data') }); 

安慰:

 ID D11 D33 D55 

在这里我想获得列ID中的元素并将它们存储在一个数组中。 我怎样才能做到这一点? 任何人都可以build议我帮忙。 谢谢。 我的控制器:

 var partnersModel = new partners(params); fs.readFile(config.csvUploadPath, function read(err, data) { if (err) { throw err; } dataArray = data.toString().split(/\r?\n/); dataArray.forEach(function(v,i){ if(v !== 'DUI'){ partnersModel.dui.push(v); } }); }); partnersModel.save(function(error, response){ 

使用一个库,CSV有很多陷阱。 我来享受包csv 。 它位于这里: https : //www.npmjs.com/package/csv 。 这是使用asynchronousAPI的一个非常快速的例子。

 const fs = require('fs') var parse = require('csv-parse') fs.readFile(inputPath, function (err, fileData) { parse(fileData, {columns: false, trim: true}, function(err, rows) { // Your CSV data is in an array of arrys passed to this callback as rows. }) }) 

由于您的文件没有每行多个值,并且除了换行符之外不包含任何分隔符,所以它只是简单的CSV。 也许String.prototype.split()是给你的?

 const fs = require('fs') fs.readFile(inputPath, 'utf8', function (err, data) { var dataArray = data.split(/\r?\n/); //Be careful if you are in a \r\n world... // Your array contains ['ID', 'D11', ... ] }) 

从如何读取数据从* .CSV文件使用JavaScript? ,使用jQuery-CSV库。

注意:该库旨在处理任何符合RFC 4180的CSV数据,包括大多数“简单”解决scheme忽略的所有令人讨厌的边缘情况。

 var fs = require('fs'); var $ = jQuery = require('jquery'); $.csv = require('jquery-csv'); var sample = './path/to/data/sample.csv'; fs.readFile(sample, 'UTF-8', function(err, csv) { $.csv.toArrays(csv, {}, function(err, data) { for(var i=0, len=data.length; i<len; i++) { console.log(data[i]); //Will print every csv line as a newline } }); }); 

这里是jquery-csv的示例代码片段。