通过猫鼬回调传递值

时间:2018-08-02 01:48:24

标签: javascript node.js mongodb mongoose callback

我从register.js导出函数以计算集合中文档的数量。

另一个函数利用了该函数,我将使其做一些附加任务。

这里的问题是,我在console中得到结果,并且不确定如何通过回叫传递结果。


register.js

module.exports.getCount = function(){
  User.countDocuments({},function(err,count){
    console.log(count)    // WORKS FINE
    return count;         //Doesn't work
  })
}

module.exports.FB_updateUserID = function(facebookUserID, callback){
  this.getCount();

  return this.getCount(); //Doesn't work
}

facebookLogin.js

User.FB_updateUserID(req.body.facebookUserID, (err, updatedUser) => {
  if (err) throw err;
  console.log(updatedUser);    //THIS SHOWS UNDEFINED

});

我正在寻找正确的方法。

1 个答案:

答案 0 :(得分:0)

这是因为我们无法为异步功能curl -X POST localhost:5000/parse -d '{"q":"I am looking for Chinese food"}' **--header "Content-Type: application/json"** 做这种return。我的建议是切换到getCountpromise以获得更好的代码。

await async

或使用module.exports.getCount = function(){ return new Promise((resolve, reject) => { // set callback as promise function User.countDocuments({}, function(err,count){ if (err) { reject(err); } console.log(count) // WORKS FINE resolve(count); // resolve with count value }) }) } module.exports.FB_updateUserID = function(facebookUserID){ return this.getCount(); } // facebooklogin.js User.FB_updateUserID(req.body.facebookUserID).then(updatedUser => { if (err) throw err; console.log(updatedUser); });

await