Как определить, возвращает ли mongodb пустые результаты? - PullRequest
0 голосов
/ 27 февраля 2019

Я разработал API для извлечения пользователей из моего mongodb в стек MEAN с помощью Express, и мне нужно определить, возвращает ли mongodb пустой массив.Ниже приведен мой код:

router.get('/user/:name', function (req, res) {
  users
    .find({ name: { $regex: '.*' + req.params.name + '.*' } })
    .exec(function (err, user) {
      if (err) {
        console.log(err)
      } else if (user === null) {
        console.log('user not found')
      } else {
        res.json(user)
        console.log('user found')
      }
    })
})

Я пытался сделать запрос так, чтобы результаты были пустыми, но консоль все еще регистрирует "пользователь найден". Пожалуйста, помогите!

1 Ответ

0 голосов
/ 27 февраля 2019

Вы используете find.Эта функция всегда возвращает массив, если пользователь не найден, она возвращает пустой массив, который никогда не будет равен null.

Если вы используете функцию findOne, тогда документ или null будетвернулся.

Вместо этого проверьте длину результата:

} else if (user.length === 0) {

Если вы хотите получить только один документ, вы можете использовать findOne:

users.findOne({name: {$regex: ".*"+req.params.name+".*"}}).exec( // ...

В этом случае вашчеки менять не нужно.

...