簡體   English   中英

Javascript節點從CSV文件讀取並將數據存儲到對象中

[英]Javascript Node Read from CSV file and store data into object

嘗試讀取一個csv文件並將其中的數據存儲到一個對象中,然后我可以將其用於其他任務。

    var csv = require('csv');

    var obj = csv();

    var filename = process.argv[2];

    function Employee(eno, ename, sal) {

        this.EmpNo = eno;
        this.EmpName = ename;
        this.Salary = sal;
    };

    var Employee = {};

    obj.from.path(filename).to.array(function (data) {
        for (var index = 0; index < data.length; index++) {
               Employees.push(new Employee(data[index][0], data[index][1], data[index][2]));
        }
    });

console.log(Employee);

運行此命令時出現錯誤:

var obj = csv();
          ^

TypeError: csv is not a function

有任何想法嗎?

編輯:

根據下面的答案更改為此,但是無法在函數外部填充字符串:

string = {}

var lineReader = require('readline').createInterface({
    input: fs.createReadStream(filename)
});

lineReader.on('line', function (line) {
    var splitLine = line.split(',');

        string[splitLine[0]] = {
            name: splitLine[0],
            dob: splitLine[1],
            employeeid: splitLine[2],
            country: domain,
            zone: splitLine[4],
            type: splitLine[5],
            id: splitLine[7],
            number: splitLine[8]
        }

    lineReader.close()
    }
})

console.log(string)

查看該模塊的文檔 ,看來您不太正確地使用它。 csv不是構造函數,而是具有應調用的方法。 有一些示例可以指導您正確使用。

來自模塊網站的回調示例;

var csv = require('csv');

csv.generate({seed: 1, columns: 2, length: 20}, function(err, data){
  csv.parse(data, function(err, data){
    csv.transform(data, function(data){
      return data.map(function(value){return value.toUpperCase()});
    }, function(err, data){
      csv.stringify(data, function(err, data){
        process.stdout.write(data);
      });
    });
  });
});

如果要讀取文件,然后將內容附加到數組;

輸入項

name,age
Alex,24
Sam,99

var fs = require('fs');
var csv = require('csv');
var strings = [];

var readStream = fs.createReadStream('./input.csv');

var parser = csv.parse({columns:true});

parser.on('readable', function() {
  while(record = parser.read()) {
    strings.push(record);
  }
});

parser.on('error', function(err) {
  console.log(err.message);
});

parser.on('finish', (function() {
  console.log(strings);
}));

readStream.pipe(parser);

輸出量

[ { name: 'Alex', age: '24' }, { name: 'Sam', age: '99' } ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM