我目前正在摆弄Node.js,我坚持这个问题。
我正在使用csvtojson转换器(https://github.com/Keyang/node-csvtojson)作为一个单独的模块,我可以在我的其他JS文件中多次调用它。
这是我的tools.js:
module.exports = {
csvToJson: function (csvPath) {
var Converter = require('csvtojson').Converter;
var converter = new Converter({});
var transfer = "DEFAULT";
converter.fromFile(csvPath, function(err, result){
if (err) {
return console.log(err);
}
else {
transfer = result;
}
});
return transfer;
}
};
以下是我的称呼方式:
var countriesCsvFile = path.join(__dirname, '..', 'testDataFiles', 'countries.csv');
//GRAB TOOLS
var tools = require('../app/tools');
console.log(tools.csvToJson(countriesCsvFile));
结果始终是“DEFAULT”值,表示转换器未触及它。
我想将它作为函数的返回值传递,以进一步能够动态处理数据,而无需创建文件,并读取它。 这肯定是一些范围问题,但是在我的头皮刮了几个小时后,浏览问题我找不到任何有用的东西。
另外,另一个注意事项:如果我调用console.log(结果)而不是transfer = result,它会显示我宝贵的数据。
答案 0 :(得分:1)
你必须传入一个回调函数,因为csvToJson函数在为其赋值之前返回'transfer'。像Sirko说的那样,它是异步的。您也可以使用promises而不是回调,但这本身就是另一个主题。
module.exports = {
csvToJson: function (csvPath, callback) {
var Converter = require('csvtojson').Converter;
var converter = new Converter({});
converter.fromFile(csvPath, function(err, result){
if (err) {
callback(err);
}
else {
callback(null, result);
}
});
}
};