0
これが今のように私の前のフックです:MongoDB/mongoose - mongoose内で複数の操作を行っているときに次の呼び出しを処理する方法
OrganisationSchema.pre('remove', function(next) {
Account.update({'organisations._id': this._id}, {$pull: {'organisations._id': this._id}}, {multi: true}, (err) => {
if (err) {
return next(err);
}
Invite.remove({organisation: this._id}, (err) => {
if (err) {
return next(err);
}
next();
});
});
});
何Invite
文書が存在しない場合、その後next
が呼び出されることはありませんので、これは明らかに動作しません。
は、好ましくは、私が希望するもののようなものです:
OrganisationSchema.pre('remove', function(next) {
Account.update({'organisations._id': this._id}, {$pull: {'organisations._id': this._id}}, {multi: true}, next);
Invite.remove({organisation: this._id}, next);
});
しかし、この解決策はおそらく、アプリのクラッシュを引き起こし、二回next
解雇でしょう。
next
を呼び出す前に、複数の操作が完了するのを待つ優雅な方法がありますか?私が考えていた解決策の1つは、完成した操作の数を確認してから操作の総数を確認することですが、もっと良い方法が必要だと感じています。