以同步方式串联进行mongoose查询

时间:2017-10-29 05:45:44

标签: node.js mongodb express asynchronous mongoose

我有一个执行三个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');
});

1 个答案:

答案 0 :(得分:0)

您应该将回调嵌套在回调中。

func1(args, function(){
    // do something here
    func2(someMoreArgs, function(){
        // do something more here
        func3(andMore, function(){

        })
    })
})

如果你想避免嵌套回调,请使用mongo-client或mongoose的promise接口