当前位置: 代码迷 >> JavaScript >> 如何确保在Mongoose中的console.log之前执行功能?
  详细解决方案

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

热度:81   发布时间:2023-06-05 10:32:01.0

我有一个函数findUser而我试图使用来实现sailsMongoDbmongoose是如下:

  findUser(userId);

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

这里的User是一个模型,我正在根据findUser函数收到的user_id对特定的_id执行findOne操作。在node Inspector运行时,我发现我的console.log语句在findUser函数完成之前被打印。 我的问题是如何确保我的findUser函数先执行,然后将console.log is打印成猫鼬?

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

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

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