Javascript 或在mongoose.js中使用查询生成器的运算符

Javascript 或在mongoose.js中使用查询生成器的运算符,javascript,mongoose,Javascript,Mongoose,如何在Mongoose中使用查询生成器执行“或”运算符 我尝试过这样的方法:通过ID或用户名查找用户 但它不起作用 User.findOne({}) .where( '_id', 'username').equals(param) 试着按照这些思路来做: User.findOne({ $or:[ {'condition_1':param}, {'condition_2':param} ]}, function(err,docs){

如何在Mongoose中使用查询生成器执行“或”运算符

我尝试过这样的方法:通过ID或用户名查找用户 但它不起作用

User.findOne({})
      .where( '_id', 'username').equals(param)

试着按照这些思路来做:

User.findOne({
     $or:[ 
       {'condition_1':param}, {'condition_2':param} 
     ]},
     function(err,docs){
       if(!err) res.send(docs);
     }
  });

我的解决方案

// Needed to user ObjectID comparison
const { ObjectID } = require('mongodb'); 

// Check if param is a valid ID otherwise is Username
let id_or_username = ObjectID.isValid(id) ? '_id' : 'username';

// Find post by ID or Username
Home
  .findOne({})
  .where(id_or_shortid).equals(id)
  .exec(callback)  

那里面的手术室在哪里?你能为你想要实现的目标编写伪代码吗?你使用哪种版本的猫鼬?好吧,@boroboris这是我的问题。。。如何在mongoose中执行OR,我使用的是最新版本的mongoose。我想问一下您想要使用的具体或条件。哦,对不起,我试图以这种格式在WHERE中传递选项“\u id”,“username”,我在这里找到了答案的一部分:这样您就可以检查它,而不必输入WHERE。但我还没有测试过这个解决方案