javascript - Mongoose 查找多个文档

标签 javascript node.js mongodb mongoose mongodb-query

我有一个基本的用户架构

var UserSchema = new Schema({
  name: {
    type: String,
    required: true
  },
  password: {
    type: String,
    required: true
  }
});

现在我想实现双重登录功能,

  async.parallel([
    function (cb) {
      User.findOne({$and: [{name: req.body.username1}, {password: req.body.password1}]}, function (err, u) {
        if (!u)
          err = "User1 dose not exist";
        cb(err, u)
      });
    },
    function (cb) {
      User.findOne({$and: [{name: req.body.username2}, {password: req.body.password2}]}, function (err, u) {
        if (!u)
          err = "User2 dose not exist";
        cb(err, u)
      });
    }
  ], function (err, results) {
      ....

我想知道是否有简单的方法可以在一个 User.find() 函数中查找这两个用户信息?

最佳答案

您只需使用 $or 。还有您对 $and 的使用这里是多余的:

  User.find({
      "$or": [
         { "name": req.body.username1, "password": req.body.password1 },
         { "name": req.body.username2, "password": req.body.password2 }
      ]
  },function(err,result) {
      // logic in here

  })

然后处理验证响应所需的任何逻辑,最明显的情况是,如果响应的长度不是至少两项,则找不到其中一项选择。

这是“用户名”当然应该具有唯一约束的情况之一。

关于javascript - Mongoose 查找多个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28892379/

相关文章:

node.js - Mongoose - 如何根据另一个字段更改 TTL?

javascript - 我的网站在我的 Chrome 上不断崩溃

javascript - 如何以编程方式更改 svg 视口(viewport)?

javascript - 将 bcrypt 哈希/验证函数转换为异步函数

mysql - 如何在 Node mysql 中使用 IF EXISTS 语句?

Mongodb - 通过 ODBC 连接

javascript - 如何通过异步 xmlhttprequest 响应设置变量

javascript - 使用iframe进行交叉数据交换

javascript - 等待 css_parser.getCSSFiles()

javascript - mongo find选择器导致返回不匹配的结果