Задать вопрос
@Devero97

Почему не срабытвает ошибка при несуществующем запросе?

Есть 2 страницы. Одна с тегом, где содержится список карточек, другая страница - сама карточка (подробная информация про карточку).
При переходе на тег делаю такой роут:
router.route("/:tag").get(getTag);
При запросе, например, localhost:3000/na-karty я вывожу список карточек по этому тегу (и инфу разную про этот тег). Дальше я перехожу на саму карточку таким роутом:
router.route("/:card").get(getCard);
При запросе, например, localhost:3000/na-karty/kartochka-one я получаю карточку с подробной инфой.
Но теперь проблема в том, что при изменении именно тега в запросе, например, localhost:3000/na-kartochky/kartochka-one, я не получаю ошибки.

У меня есть главная страница, где я вывожу все карточки, которые есть в бд с помощью такого роута:
router.route("/").get(getCards);
И вывожу я их по определенному тегу. Допустим по тегу, который доступен по запросу localhost:3000/rating. При переходе с главной страницы на карточку с подробной инфой, я делаю такой запрос localhost:3000/rating/kartochka-one. Все кулл, но при изменении именно запроса тега, а именно, localhost:3000/omg-kak-tak/kartochka-one я не получаю ошибки. Все также страница доступна с подробной инфой карточки.

Чтобы это исправить, при запросе именно карточки я проверяю не только есть ли карточка, но и есть ли тег. Иначе я выдаю ошибку. Обработка такая:
exports.getCard = asyncHandler(async (req, res, next) => {
  const tag = await Tag.findOne({ tag: req.params.tag });
  if (!tag) {
    return next(
      new ErrorResponse(`Not found with slug of ${req.params.card}`, 404)
    );
  }

  const card = await Card.findOne({ card: req.params.card })
    .populate("tags")
    .populate("reviews");

  if (!card) {
    return next(
      new ErrorResponse(`Not found with slug of ${req.params.card}`, 404)
    );
  }

  res.status(200).json(card);
});

Но проблема в том, что я не получаю параметра тега, а лишь своей карточки, на которую я перешел. И вот как решить такую проблему? Решить вроде бы можно только передав туда параметр роута тега, но в гет запрос просто так его не передать. Что сделать можно? Помогите, пожалуйста!
  • Вопрос задан
  • 21 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы