从猫鼬函数(节点JS)中获取值

时间:2020-11-07 16:47:56

标签: node.js database mongoose undefined

我认为我误解了有关猫鼬的一些基本知识。 我正在使用.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
    
  });
}

1 个答案:

答案 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]。