我从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
});
我正在寻找正确的方法。
答案 0 :(得分:0)
这是因为我们无法为异步功能curl -X POST localhost:5000/parse -d '{"q":"I am looking for Chinese food"}' **--header "Content-Type: application/json"**
做这种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