Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将csv转换为JSON如果从另一个函数NodeJS调用,则返回空JSON_Javascript_Json_Node.js_Rest_Csv - Fatal编程技术网

Javascript 将csv转换为JSON如果从另一个函数NodeJS调用,则返回空JSON

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) {

我不知道应该是什么问题,但我目前实现了将csv文件转换为JSON并将结果打印到console.log的功能

函数看起来像:

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”的返回类型是什么?从你的应用程序的范围来看,最好有一个更大的图景。