尝试读取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)
答案 0 :(得分:4)
查看模块的documentation,看起来你没有正确使用它。 csv
不是构造函数,而是具有应该调用的方法。有一些examples可用于指导您正确使用。
来自模块网站的回调示例;
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' } ]