基本上,当我在没有任何代码的情况下在 node.js 上运行 csvtojson 模块时,它工作得很好。但是一旦我将它放入函数中,即使我的文件路径仍然存在,它也会出现未定义的情况。
JS代码:
var Converter = require("csvtojson").Converter;
// create a new converter object
var converter = new Converter({});
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/myproject';
// call the fromFile function which takes in the path to your
// csv file as well as a callback function
var woops;
var createNewEntries = function(db, woops, callback) {
converter.fromFile("./NTA-SAM-Inventory-List-Security-Management-
New_2017.csv",function(err, result){
// if an error has occured then handle it
if(err){
console.log("An Error Has Occured");
console.log(err);
}
// the result of the conversion
console.log(result);
console.log('ohhhhh');
woops=result;
});
console.log(woops);
};
MongoClient.connect(url, function(err, db) {
if(err) {
console.log(err);
}
setTimeout(function(){
createNewEntries(db, woops, function(){
if(err)
throw err;
else{
console.log(woops);
}
db.close();
});
},2000);
});
这只是测试它是否在函数内转换,它只是显示
未定义
[]
哦哦哦
在函数中时根本不进行转换。那么我究竟做错了什么。按照权利,它应该在调用该函数后进行转换。这与我在函数之前执行的代码有关吗?我已经设置了一个 setTimeout 只是为了给它一些时间,所以我认为它不应该与我的代码顺序有关。提前致谢!
最佳答案
您应该尝试使用以下代码作为您的文件名:
__dirname + "/NTA-SAM-Inventory-List-Security-Management-
New_2017.csv"
将您的代码替换为 converter.fromFile()
,现在您的代码将如下所示:
converter.fromFile(__dirname + "/NTA-SAM-Inventory-List-Security-Management-
New_2017.csv" ,function(err, result){
// if an error has occured then handle it
if(err){
console.log("An Error Has Occured");
console.log(err);
}
// the result of the conversion
console.log(result);
console.log('ohhhhh');
woops=result;
MongoClient.connect(url, function(err, db) {
if(err) {
console.log(err);
}
setTimeout(function(){
createNewEntries(db, woops, function(){
if(err)
throw err;
else{
console.log(woops);
}
db.close();
});
},2000);
});
});
希望它对您有用。
如果上述代码不起作用,请尝试使用 fast-csv
模块使用以下代码:
var fcsv = require('fast-csv');
var fs = require('fs');
/**
* Get the records from csv
*/
var writeZipCodes = function () {
var stream = fs.createReadStream(__dirname + "/NTA-SAM-Inventory-List-Security-Management-New_2017.csv");
fcsv
.fromStream(stream, { headers: true }) // headers for columns
.on("data", function (data) {
console.log(data);
var woops=data;
MongoClient.connect(url, function(err, db) {
if(err) {
console.log(err);
}
setTimeout(function(){
createNewEntries(db, woops, function(){
if(err)
throw err;
else{
console.log(woops);
}
db.close();
});
},2000);
});
})
.on("end", function () {
console.log("done");
});
}
writeZipCodes();
关于javascript - csvtojson 转换器忽略我的文件名,只是将 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44966843/