Добрый вечер, переполнение стека,
Я работаю над личным проектом и пытаюсь выяснить, почему я не могу получить правильный ответ от своего внутреннего 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." }));
});
Как мне написать свою логику, чтобы из бэкэнда возвращался правильный код состояния?