mongoose找到多个文件

时间:2015-03-06 04:32:38

标签: javascript node.js mongodb mongoose mongodb-query

我有一个基本的User架构

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

现在我要实现dual login功能,

  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()函数中找到这两个用户信息?

1 个答案:

答案 0 :(得分:4)

您只需使用$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

  })

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

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