私はNode.jsの非同期/待機機能でMongooseの約束を使用してハングアップしようとしています。私の関数printEmployees
が呼び出されたとき、私はorderEmployees
関数によって照会された従業員のリストを保存したいと思います。 console.log
ステートメントの内部にorderEmployees
が返され、printEmployees
のconsole.log
がundefined
を返し、私が約束を正しく返さないことを示しています。async/awaitでmongoose約束を使用する
私は、パラダイムを正しく理解していないということを完全に可能にすることを約束しています...どんな助けでも大歓迎です。
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';
});
},
私は[明示的な約束の作成の反パターン]を見ていません(https://stackoverflow.com/questions/23803743/what-is-the-explicit-promise-construction-antipattern-and-how-do-iavoid -it)は、エラー処理に役立ちます。そのメリットは何ですか?シンプルな非同期関数から「従業員を返す」と「投げる」ことができます。 –
@TamasHegedusええ、良い点、古い習慣は、Nodeが内部の約束から例外をうまくスローするのを手がけていなかったからです! – James