我有一个看起来像这样的用户集合,有两种不同的格式化方式:
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
来说却不起作用。
答案 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
直接搜索