我正在尝试通过Node.js的异步/等待功能来掌握使用Mongoose promises的诀窍。当我的函数printEmployees
被调用时,我想保存由orderEmployees
函数查询的雇员列表。而orderEmployees
中的console.log
语句返回预期的查询,而printEmployees
中的console.log
返回undefined
,这表明我没有正确地返回promise。
我对promises是个新手,完全有可能,以至于我没有正确地理解这个范例……任何帮助都是非常感谢的。
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';
});
},
发布于 2017-09-28 05:04:12
您没有返回来自orderEmployees的承诺。
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';
});
},
发布于 2017-09-28 05:03:43
您需要从orderEmployees
返回一个Promise
orderEmployees: companyId => User.find({ companyId }).exec()
如果你想在返回之前做一些错误处理或预处理,那么你可以保持你的代码不变,但要记住返回结果(promises是可链接的)。
https://stackoverflow.com/questions/46457071
复制相似问题