我认为我误解了有关猫鼬的一些基本知识。 我正在使用.find()和mongoose从数据库中获取一个值,但是当退出回调时,它将作为未定义返回。有没有办法将此值传递出去?
先谢谢您, 蒂姆
function getNumberOfRegisteredPupils(sProg){
var numberOfPupils;
User.find({studyProgram: sProg}, (err, users)=>{
console.log(users.length); //logs correct value to terminal
return users.length; //returns undefined
});
}
答案 0 :(得分:0)
您的函数getNumberOfRegisteredPupils
不返回任何内容(该函数中没有return
语句,仅在User.find
函数的回调中!),因此没有返回undefined
。
您要返回承诺:
function getNumberOfRegisteredPupils(sProg){
return User.find({studyProgram: sProg}, (err, users)=>{
return users.length;
});
}
或者您也可以按照注释中的建议使用async / await语法:
async function getNumberOfRegisteredPupils(sProg){
const users = await User.find({studyProgram: sProg}).exec();
return users.length;
}
OT:但是,如果您只希望获得一定数量的用户,请查看Model.count()
[docs]。