Javascript 将csv转换为JSON如果从另一个函数NodeJS调用,则返回空JSON
我不知道应该是什么问题,但我目前实现了将csv文件转换为JSON并将结果打印到console.log的功能 函数看起来像:Javascript 将csv转换为JSON如果从另一个函数NodeJS调用,则返回空JSON,javascript,json,node.js,rest,csv,Javascript,Json,Node.js,Rest,Csv,我不知道应该是什么问题,但我目前实现了将csv文件转换为JSON并将结果打印到console.log的功能 函数看起来像: var Converter = require("csvtojson").Converter; var converter = new Converter({delimiter: ';'}); function convertToJSON() { converter.fromFile('data.csv', function(err, result) {
var Converter = require("csvtojson").Converter;
var converter = new Converter({delimiter: ';'});
function convertToJSON() {
converter.fromFile('data.csv', function(err, result) {
if (err) {
console.log(err);
}
var data = result;
console.log(result);
});
}
当我在server.js中这样调用它时,它会将JSON返回到控制台
convertToJSON();
但是,当我想从app.get by REST调用此函数时,它将始终返回空对象
app.get("convertToJSON", function(req,res){
convertToJSON();
})
我不知道应该是什么问题,为什么它是不工作的内部得到呼叫。执行过程中没有错误 您的代码已变得异步,请在该功能中使用承诺。 在app.get内调用时,加载文件需要更多时间
function convertToJSON() {
var promise1 = new Promise(function(resolve, reject) {
converter.fromFile('data.csv', function(err, result) {
if (err) {
reject(err);
}
var data = result;
resolve(result);
});
});
return promise1;
}
当我们使用承诺时,我们需要妥善处理它。请看这个了解更多细节 试试这个
var Converter = require("csvtojson").Converter;
var converterObj = new Converter({delimiter: ';'});
function convertToJSON() {
return new Promise((resolve, reject) => {
converterObj.fromFile('data.csv', (err, result) => {
if (err) {
reject(err);
}
resolve(result);
});
});
}
convertToJSON()
.then((result) => {
console.log(result);
})
.catch((error) => {
console.log(error);
});
检查控制台并记录错误,您可能会在控制台中收到错误。在nodeJS控制台中没有错误,在浏览器中也没有错误……在nodeJS控制台中,仅打印为空[]您的
convertToJSON
-方法不会返回任何内容。它只是将对象记录到控制台。@rweisse是对的,您应该为您的方法实现一个回调函数,因此当您调用它时,convertToJSON(函数(错误,数据){res.send(数据);})
我知道它不会返回任何我需要在获取解析的JSON并保存它之后进行DB insert的内容。所以我不需要在这个函数中返回。但为什么它在启动服务器时调用serverJS,而不是从app.get()调用此函数后,会记录结果?我该如何解决这个问题?我对AJAX和NodeJS不太熟悉。@strakz检查我添加的示例谢谢,但我不明白,您的示例对我来说有什么有用和重要的地方。.我修改了您的函数,您只需要使用此promise函数。但它不起作用,仍然返回空数组:(所以这不是问题仍然有相同的问题,这个解决方案只有在我从app.get(/some link)调用它时才有效)方法,如果我想在rest调用中调用这个方法,那么函数应该被调用,然后它总是返回空的JSON数组。所以我不知道加载文件或读取文件是否有问题,或者我不知道,但是感谢您的时间OK…函数“converterObj.fromFile”的返回类型是什么?从你的应用程序的范围来看,最好有一个更大的图景。