gpt4 book ai didi

javascript - 通过 Mongoose 回调传递值

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:32 25 4
gpt4 key购买 nike

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

另一个函数利用该函数,我将让它执行一些额外的任务。

这里的问题是,我在控制台中获取结果,但不确定如何通过回调传递它。

<小时/>

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

});

我正在寻找正确的方法。

最佳答案

这是因为我们无法为异步函数 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com