将csv转换为json对象将返回未定义的

将csv转换为json对象将返回未定义的,json,node.js,csv,callback,Json,Node.js,Csv,Callback,我发现了一些关于S/O和其他方面的例子,但它们似乎对我没有帮助 我正在节点中创建一个私有模块,它接收csv并将其转换为json对象。它正确地将正确的值输出到命令行,但对象本身未定义 exports.csvToJSON = function(file, callback) { converter.fromFile(file, function(err, result) { if (err) { console.log('error: ', error) } else

我发现了一些关于S/O和其他方面的例子,但它们似乎对我没有帮助

我正在节点中创建一个私有模块,它接收csv并将其转换为json对象。它正确地将正确的值输出到命令行,但对象本身未定义

exports.csvToJSON = function(file, callback) {
  converter.fromFile(file, function(err, result) {
    if (err) {
      console.log('error: ', error)
    } else {
      return result;
      callback(err, result);
    }
  });
  console.log(callback)
}
我目前正在使用该模块,并尝试了其他类似的软件包。我提到的文章:

  • (虽然不完全相关,因为这不是循环函数)
我不确定我是否只是没有正确理解回调,但即使我
console.log(result.type)
,它也会返回未定义的回调。我还尝试过这样定义回调:

exports.csvToJSON = function(file, callback) {
  csvtojson().fromFile(file, function(err, result) {
    if (err) {
      console.log('error: ', error)
    }
    return result;
    callback(result);
  });
}
以下是控制台输出的示例:

   Mirandas-MacBook-Pro:zendesktool mirandashort$ node ./controllers/update.js
[ { ticket:
     { ids: '3280805',
       requester_email: 'miranda@barkbox.com',
       status: 'pending',
       comment: [Object],
       subject: 'sup dog',
       custom_fields: [Object],
       add_tags: 'update_via_csv, dogs_are_cool, sup' } } ] undefined
现在,因为我的其他函数都依赖于此工作,所以我只在文件中使用
exports.csvToJSON('update2.csv')
调用它,其中
update2.csv
是一个实际的文件。最终,这将在另一个函数中调用,我将在其中使用async,但我需要首先使用它。此外,当第二个代码块示例调用该输出时,它似乎链接到了
console.log(err)
,我不知道为什么


或者,如果有一种方法可以在不使用csvtojson的情况下实现这一点,那也没关系。唯一的要求是csv格式的文件可以作为对象数组返回。

明白了。我刚刚使用瀑布将两个单独的模型放在一起:

exports.csvToJSON = function(file, callback) {
  csvtojson().fromFile(file, function(err, result) {
    if (err) {
      console.log(err);
    } else {
      callback(null, result[0]);
    }
  });
}

exports.zdUpdateMany = function(data, callback) {
  credentials.config.tickets.updateMany(3280805, data, function(err, result) {
    if (err) {
      console.log(err);
    } else {
      callback(false, result);
    }
  });
}


// function to update tickets
exports.processUpdate = function(file, callback) {
  async.waterfall([
    async.apply(exports.csvToJSON, file),
    exports.zdUpdateMany
  ], function(err, result) {
    if (err) {
      console.log(err);
    } else {
      console.log(result);
    }
    callback(err, result);
  });
}

返回未定义的
console.log
的可能重复项?你能举一个调用函数的例子吗?@DanielA.White虽然我稍后会在这个应用程序中使用async,但这篇文章本身并不能帮助我理解我的问题。据我所知,我的格式与回答的建议相差不远。另外,我没有使用Ajax。@Catalyst Twore
console.log
s在命令行上返回正确的对象,但是如果我对任何结果执行
type
,它总是未定义的。此外,JSON.parse无法计算结果,尽管JSON.stringify可以(但仍将返回未定义)。我将用一个调用示例以及控制台输出更新我的帖子。@DanielA.White我尝试为回调添加
setImmediate
,但仍然没有成功。