我正在尝试使用节点csvtojson库转换CSV文件,查找文件中的某些数据,将数据添加到字符串,然后记录字符串(最终我将其写入文本文件) 。
JSON对象很好,我可以在函数中记录数据,但我不能使用+ =将它附加到我的字符串。我认为这是一个范围问题,但我不确定我哪里出错了。
//Converter Class
var Converter=require("csvtojson").core.Converter;
var fs=require("fs");
var capsuleFile="capsule-contacts.csv";
var capsuleFileStream=fs.createReadStream(capsuleFile);
//new csv to json converter instance
var csvConverter=new Converter({constructResult:true});
var fileToWrite = "";
csvConverter.on("end_parsed",function(jsonObj){
for(var i = 0; i < jsonObj.length; i++) {
if(jsonObj[i].Type == "Organisation") {
console.log(jsonObj[i].Organisation.toString()); //this works
fileToWrite += jsonObj[i].Organisation.toString();
fileToWrite += " - ";
fileToWrite += jsonObj[i]["Email Address"].toString();
fileToWrite += " - ";
fileToWrite += jsonObj[i]["Work Phone"].toString();
fileToWrite += "\n";
console.log(fileToWrite); //this works
}
}
});
//this does not work
console.log(fileToWrite);
答案 0 :(得分:0)
csvtojson
执行转换 异步 ,因此您不能指望console.log(fileToWrite);
显示正确的输出,因为end_parsed
事件会在你的console.log(fileToWrite);
执行完毕之后的某个时间才会发生。欢迎来到异步编程世界(和node.js)。