使用不同参数的猫鼬查询

时间:2020-05-08 14:29:25

标签: node.js mongodb mongoose

我有一个看起来像这样的用户集合,有两种不同的格式化方式:

case '0':
   result = "A";
   break;
 case '1':
   result = "B";
   break;

有些人的{ id: '5d5d4980133e9145fa4f85d5', name: 'John Doe', user_id: null }, { id: '5d5d4980133e9145fa4f85d3', name: 'Jane Doe', user_id: jane-doe } 为null。我想做的是,当我按ID(通过参数)搜索时,我想先按user_id搜索,如果它为空,则要按user_id搜索。

我尝试过这样的事情:

_id

如果我通过User.findOne({ $or: [ {_id: params.id}, {user_id: params.user_id} ]}) 搜索它就可以了,但是对于_id来说却不起作用。

1 个答案:

答案 0 :(得分:0)

您的user_id不是字符串,正如我在JSON中看到的那样

findById(id) => {
  return User.findOne({
     user_id: id
  }).then(user => {
     if (!user) {
       return User.findById(id)
     }
     return user
  })
}

在这里,我创建了一种方法,供您先按user_id然后按id搜索User,但是我希望您能查看一下,如果它是ObjectID,则应跳过搜索user_id并通过_id直接搜索