【问题标题】:Getting values out of a mongoose function (node JS)从猫鼬函数中获取值(节点 JS)
【发布时间】:2020-11-08 01:15:54
【问题描述】:

我想我在这里误解了关于猫鼬的一些基本知识。 我正在使用 .find() 和猫鼬从数据库中获取一个值,但是当它退出回调时它被返回为未定义。有没有办法把这个值传出去?

提前谢谢你, 蒂姆

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
    
  });
}

【问题讨论】:

  • 在你的函数中使用 async / await。

标签: node.js database mongoose undefined


【解决方案1】:

您的函数getNumberOfRegisteredPupils 不返回任何内容(该函数中没有return 语句,仅在User.find 函数的回调中!),因此undefined

你想要返回一个承诺:

function getNumberOfRegisteredPupils(sProg){
  return User.find({studyProgram: sProg}, (err, users)=>{
    return users.length;
  });
}

或者您可以按照 cmets 中的建议使用 async/await 语法:

async function getNumberOfRegisteredPupils(sProg){
  const users = await User.find({studyProgram: sProg}).exec();
  return users.length;
}

OT:但是,如果您只想获得用户数量,请查看Model.count() [docs]。

【讨论】:

  • 啊,是的,这是有道理的。但是,这不会返回该数组的长度,它会返回有关我的整个数据库的详细信息。是否有一个原因?非常感谢你的帮助,蒂姆
  • @Tburgum 我在本地测试了使用和不使用过滤器的答案,它工作正常(返回正确数量的结果)。如果需要,我建议提出一个新问题。
猜你喜欢
  • 2020-04-25
  • 2018-12-03
  • 2018-05-03
  • 2022-01-26
  • 1970-01-01
  • 2015-11-19
  • 2018-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多