我有一個執行三個mongooose命令的函數。 1.查找所有合作伙伴的列表。 2.查找所有用戶的列表。 3.更新用戶表。以同步方式串聯貓鼬查詢
問題:Mongoose是異步執行的,它執行其他命令。我如何讓它以1,2,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 –