首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将mongoose promises与async/await结合使用

将mongoose promises与async/await结合使用
EN

Stack Overflow用户
提问于 2017-09-28 04:54:56
回答 2查看 82.5K关注 0票数 33

我正在尝试通过Node.js的异步/等待功能来掌握使用Mongoose promises的诀窍。当我的函数printEmployees被调用时,我想保存由orderEmployees函数查询的雇员列表。而orderEmployees中的console.log语句返回预期的查询,而printEmployees中的console.log返回undefined,这表明我没有正确地返回promise。

我对promises是个新手,完全有可能,以至于我没有正确地理解这个范例……任何帮助都是非常感谢的。

代码语言:javascript
复制
  printEmployees: async(company) => {
    var employees = await self.orderEmployees(company);
    // SECOND CONSOLE.LOG
    console.log(employees);
  },

  orderEmployees: (companyID) => {
    User.find({company:companyID})
    .exec()
    .then((employees) => {
      // FIRST CONSOLE.LOG
      console.log(employees);
      return employees;
    })
    .catch((err) => {
      return 'error occured';
    });
  },
EN

回答 2

Stack Overflow用户

发布于 2017-09-28 05:04:12

您没有返回来自orderEmployees的承诺。

代码语言:javascript
复制
printEmployees: async(company) => {
  var employees = await self.orderEmployees(company);
  // SECOND CONSOLE.LOG
  console.log(employees);
},

orderEmployees: (companyID) => {
  return User.find({company:companyID})
 .exec()
 .then((employees) => {
   // FIRST CONSOLE.LOG
   console.log(employees);
   return employees;
 })
 .catch((err) => {
   return 'error occured';
 });
},
票数 4
EN

Stack Overflow用户

发布于 2017-09-28 05:03:43

您需要从orderEmployees返回一个Promise

代码语言:javascript
复制
orderEmployees: companyId => User.find({ companyId }).exec()

如果你想在返回之前做一些错误处理或预处理,那么你可以保持你的代码不变,但要记住返回结果(promises是可链接的)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46457071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档