Как я могу написать условную логику с возвращенным значением из mongoose db.collection.find ()? - PullRequest
0 голосов
/ 10 ноября 2018

Добрый вечер, переполнение стека,

Я работаю над личным проектом и пытаюсь выяснить, почему я не могу получить правильный ответ от своего внутреннего API. Ниже вы найдете код одного из маршрутов, которые я пишу. Здесь я пытаюсь получить Персона из базы данных по полю тайны.

Мой мыслительный процесс заключается в том, что если метод mongoose find () не может найти персонажей с заданными тайнами, тогда я должен вернуть ошибку 404 и отправить ответ json с подробным описанием того, что пошло не так.

Я думал, что смогу сделать это, сказав if (! Personas), где personas - это то, что возвращает mongoose db.collection.find (). Это не работает, и мой API возвращает пустые квадратные скобки со статусом 200 OK. Все мои тесты проводятся через Почтальона.

console.logs в коде - мои операторы отладки.

console.log (personas === {}? True: false); Возвращает false

console.log (typeof personas); Возвращает объект

console.log (personas === []? True: false); Возвращает false

console.log (personas === undefined? True: false); Возвращает false

router.get("/personas/by/:arcana", (req, res) => {
const errors = {};
// The below logic is not working. We're not sending a 404 on failure.
Persona.find({ arcana: req.params.arcana })
.then(personas => {
  console.log(personas === {} ? true : false);
  console.log("What is the type of the personas variable?",typeof personas);
  console.log(personas === [] ? true : false);
  if (!personas) {
    errors.no_personas =
      "There are no personas in the compendium with that arcana.";
    return res.status(404).json(errors);
  }
  res.json(personas);
})
.catch(err => res.status(404).json({ personas: "There are no personas." }));
});

Как мне написать свою логику, чтобы из бэкэнда возвращался правильный код состояния?

1 Ответ

0 голосов
/ 10 ноября 2018

if (!personas.length) или if (personas.length === 0). Если personas - пустой массив или объект, это не ложь.

...