Mongoose .find () возвращает ответ 200 и пустой массив, когда нет подходящих результатов - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь добавить уровень проверки к моему запросу, проверяя, что запрос возвращает что-то перед тем, как я отправлю ответ.Моя проблема в том, что когда я тестирую это с Почтальоном, я получаю ответ 200 с возвращенным пустым массивом, хотя в моей коллекции вообще нет записей.

router.get(
  "/",
  passport.authenticate("jwt", { session: false }),
  (req, res) => {
    const errors = {};
    Appointment.find({ user: req.user.id })
      .populate("user", ["firstName", "lastName", "email", "phone"])
      .then(appointments => {
        if (!appointments) {
          // if the user id is not there, or if the appointments array is empty
          errors.noappointments = "You do not have any appointments booked";
          return res.status(404).json(errors);
        }
        res.json(appointments);
      })
      .catch(err => res.status(404).json(err));
  }
);

1 Ответ

0 голосов
/ 24 сентября 2018

Кажется, вы ожидаете real обещание. exec дает вам :

router.get(
  "/",
  passport.authenticate("jwt", { session: false }),
  (req, res) => {
    const errors = {};
    Appointment.find({ user: req.user.id })
      .populate("user", ["firstName", "lastName", "email", "phone"])
      .exec()
      .then(appointments => {
        if (!appointments.length) {
          // if the user id is not there, or if the appointments array is empty
          errors.noappointments = "You do not have any appointments booked";
          return res.status(404).json(errors);
        }
        res.json(appointments);
      })
      .catch(err => res.status(404).json(err));
  }
);

Посмотрите, сработает ли это.

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