我从中导出函数来计算集合中文档数的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

});


我正在寻找正确的方法。

最佳答案

这是因为我们不能为异步功能return做这种getCount。我的建议是切换到promiseawait 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

// facebooklogin.js
try {
  const updatedUser = await User.FB_updateUserID(req.body.facebookUserID);
  console.log(updatedUser);
} catch (err) {
  throw err;
}

关于javascript - 通过 Mongoose 回调传递值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51644420/

10-11 04:59