我正在尝试在node.js的async/await功能中使用Mongoose 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';
});
},
您需要
orderEmployees: (companyID) => {
return User.find({ company:companyID }).exec()
}
同样非常重要的是,您应该在
更好的做法是,完全不要包含消息覆盖它。
错误条件应该抛出错误,而不是返回错误。
为了使
当您使用
这表示您将注意到您没有返回在
orderEmployees: (companyID) => {
return User.find({company:companyID}) // Notice the return here
.exec()
.then((employees) => {
// FIRST CONSOLE.LOG
console.log(employees);
return employees;
})
.catch((err) => {
return 'error occured';
});
},
或
orderEmployees: async(companyID) => {
try {
const employees = await User.find({company:companyID}).exec();
console.log(employees);
return employees;
} catch (err) {
return 'error occured';
}
},
PS:这里的错误处理有些瑕疵。我们通常不会通过从函数返回错误字符串来处理错误。在这种情况下,最好让错误传播,并从一些顶层UI代码处理它。
您没有返回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';
});
},