私は3つのmongoooseコマンドを実行する関数を持っています。 1.すべてのパートナーのリストを検索します。 2.すべてのユーザーのリストを検索します。 3.ユーザーテーブルを更新します。mongooseクエリを同期的に連続して実行する
問題:Mongooseは非同期で実行し、他のコマンドを実行します。どのようにしてそれをシリーズ1,2,3で実行させ、他のコマンドを実行するのですか?以下、コードスニペットを添付しました。
この問題は、3つのmongooseコマンドを非同期に実行し、redirect()を呼び出していることが原因です。あなたが巣のコールバックのコールすべき
router.post('/login', function(req, res, next) {
Partner.findOne({'groupName': req.session.user.groupnName}), function(error, data) {
var partnerInfo = data;
if(partnerInfo && req.session.user) {
req.session.user.accountID = partnerInfo.accountID;
req.session.user.iamRole = partnerInfo.iamRole;
}
};
var id;
User.find({'username': req.session.user.username}, function(err, data) {
if(data) {
id = data._id;
}
});
User.findByIdAndUpdate(id, req.session.user, function(error) {});
return res.redirect('/home');
});
をマングースします。あるいは約束します。モンゴースもそれをサポートしています。 https://docs.nodejitsu.com/articles/getting-started/control-flow/what-are-callbacks/ – Roshan
async.waterfall([fn1、fn2、...]、cb)を使用:https:// www .npmjs.com/package/async-waterfall –