node.js - 当 find 查询为空时,mongoose 会返回什么?

标签 node.js mongodb mongoose

我正在设置一个基于 id 搜索用户的函数,如果没有找到用户,它会创建一个新用户。我还没有用户,所以查询永远不会返回用户。但是,我无法成功检查这种情况。 find 查询为空时究竟返回什么?

 User.find(id,(error,user)=>{
        if(error){
          console.log(error);
        }else{
          if(user == [] || user == null || user == undefined || user == {} || user == '[]'){
            User.addUser({"fbID":id,"lastMessage":"[]"},(error,response)=>{
              if(error){
                console.log(error);
              }else{
                console.log(response);
              }
            });
          }else{
            console.log("User exists.");
          }
        }
      });

最佳答案

首先让我们考虑一下您的条件:

user == [] || user == null || user == undefined || user == {} || user == '[]'
  1. user == [] 将始终为 false。甚至 [] == [] 也总是假的。
  2. 如果您正在测试 user == null 那么您不需要 user == undefined 反之亦然,因为 null == undefined 始终为真(与 null === undefined 不同)。
  3. user == {} 将始终为 false。甚至 {} == {} 也总是假的。
  4. 如果 user 字面上包含字符串 [],则
  5. user == '[]' 可以为真,但这在 Mongo 中永远不会发生

这是检查是否找到任何东西的方法:

对于User.find:

User.find({}, (err, users) => {
  // users is an array which may be empty for no results
  if (err) {
    // handle error
    return;
  }
  if (users.length) {
    // there are user(s)
  } else {
    // there are no users
  }
});

对于User.findOne:

User.findOne({}, (err, user) => {
  // user is a single document which may be null for no results
  if (err) {
    // handle error
    return;
  }
  if (user) {
    // there is user
  } else {
    // there is no user
  }
});

对于User.findById:

User.findById(id, (err, user) => {
  // user is a single document which may be null for no results
  if (err) {
    // handle error
    return;
  }
  if (user) {
    // there is user
  } else {
    // there is no user
  }
});

关于node.js - 当 find 查询为空时,mongoose 会返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45172700/

相关文章:

javascript - Route.delete() 需要一个回调函数,但得到一个 [object Undefined]

javascript - 发生重复注册时 Node Express 服务器崩溃

java - 从 Node.js 应用程序调用 java 程序

javascript - 如何将 sails.js 模型与关联一起使用?

node.js - 有人如何处理 webpack 版本问题 « 需要一个 peer of ... 但没有安装 »?

javascript - mongoose 将字段从另一个文档添加到文档中

node.js - 使用文件上传将 CSV 转换为 JSON

java - Spring Boot - MongoDB - MongoLab 配置

node.js - 推送在 mongoose/mongodb 数组中不起作用

javascript - 是否有 Mongoose 方法来保存多个文档,但只有当全部成功时