我从中导出函数来计算集合中文档数的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
。我的建议是切换到promise
或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
// 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/