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

时间:2018-04-02 12:22:04

标签: 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) {

    if (err) {
        console.log(err);
    }

    var data = result;
    console.log(result);

    });
}

当我在server.js中以这种方式调用它时,它将JSON返回到控制台

convertToJSON();

但是当我想通过REST GET从app.get调用此函数时,它会返回allways空对象。

app.get("convertToJSON", function(req,res){
    convertToJSON();
})

我不知道应该是什么问题,为什么它不能在里面接听电话。执行期间没有错误。

2 个答案:

答案 0 :(得分:1)

您的代码已异步使用该功能中的承诺。 在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;
}

答案 1 :(得分:0)

当我们使用Promise时,我们需要正确处理它。有关详细信息,请查看此reference

试试这个......

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);
    });