Пн goose запрос с использованием разных параметров - PullRequest
0 голосов
/ 08 мая 2020

У меня есть коллекция пользователей, которая выглядит так, есть два разных способа ее форматирования:

{
  id: '5d5d4980133e9145fa4f85d5',
  name: 'John Doe',
  user_id: null
},
{
  id: '5d5d4980133e9145fa4f85d3',
  name: 'Jane Doe',
  user_id: jane-doe
}

У некоторых есть user_id null. Что я хочу сделать, так это то, что когда я ищу по идентификатору (через параметры), я хочу сначала выполнить поиск по user_id, а если он равен нулю, искать по _id.

Я пробовал что-то вроде это:

User.findOne({ $or: [
  {_id: params.id},
  {user_id: params.user_id}
]})

Это работает, если я ищу его по _id, но для user_id это не работает.

1 Ответ

0 голосов
/ 08 мая 2020

Ваш user_id не является строкой, как я вижу в JSON

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

Здесь я создал для вас метод поиска пользователя по user_id, а затем по id, но я бы например, у вас есть чек, если это ObjectID, вы должны пропустить поиск по user_id и искать напрямую по _id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...