如何确保在Mongoose中的console.log之前执行函数?

时间:2015-07-30 13:13:47

标签: javascript node.js mongodb mongoose

我正在尝试使用findUsersailsMongoDb实施的功能mongoose,如下所示:

  findUser(userId);

  function findUser(user_id){
    User.findOne({
            _id: user_id
        }).exec(function (err, userdata){
         //Some Logic
    });
  }
    console.log("XYZ");

此处User是一个模型,我根据findOne函数收到的_id对特定user_id执行findUser操作.On在node Inspector中运行我发现在console.log函数完成之前我的findUser语句已打印出来。我的问题是如何确保首先执行findUser函数,然后用猫鼬打印console.log is

1 个答案:

答案 0 :(得分:1)

您需要将console.log放在exec回调中。

这是由于Node.js以及它是异步操作的。它同时运行User.findOneconsole.log()函数,并且不等待来自MongoDB调用的数据返回。在exec promise本身内,代码是同步运行的,因此在exec函数中放置console.log将解决问题。

function findUser(user_id){
  User.findOne({_id: user_id})
      .exec(function (err, userdata){
         //Some Logic
         console.log("XYZ")        
      });
};