【问题标题】:MongoDb findOne query results in error - even if data is foundMongoDb findOne 查询导致错误 - 即使找到数据
【发布时间】:2022-08-18 17:30:01
【问题描述】:

以下是我的控制器功能

exports.validateUsername = async (uName) => {
  console.log(\"inside validate username\");
  await User.findOne({ username: \"sab2\" }).then(function (err, user) {
    if (err) {
      console.log(\"inside err\");
      console.log(\"error\");
      console.log(err);     
      return true;
    } else {
      console.log(\"inside user found\");
      console.log(\"user\");
      console.log(user);
      return false;
    }
  });
};

我在我的 \"user\" 集合中有用户名 =\"sab2\" 的记录。但是,promise 函数仍然会导致错误,并进入 if(err)。

但是当我执行 console.log(err) 时,我得到了实际的用户数据 \"sab2\" 对象。

我怀疑函数语法是否是函数(数据,错误)。

打印错误对象

请提出解决方案。

    标签: node.js mongodb


    【解决方案1】:

    findOne 上的then() 不会返回错误,我会这样重写:

      User.findOne({ username: "sab2" }, function(err, user) {
        if (err) {
          console.log("inside err");
          console.log("error");
          console.log(err);     
        return true;
        } else {
          console.log("inside user found");
          console.log("user");
          console.log(user);
        return false;
    }
      });
    

    【讨论】:

      【解决方案2】:

      then 不返回错误。做这样的事情来捕捉错误

      await User.findOne({ username: "sab2" }).then((user) => {
          console.log(user)
        }).catch(error=>console.log(error))
      

      或使用回调。见here

      【讨论】:

        猜你喜欢
        • 2016-12-28
        • 2015-04-28
        • 2018-01-21
        • 1970-01-01
        • 2021-11-26
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 2015-10-12
        相关资源
        最近更新 更多