Есть 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);
});
Но проблема в том, что я не получаю параметра тега, а лишь своей карточки, на которую я перешел. И вот как решить такую проблему? Решить вроде бы можно только передав туда параметр роута тега, но в гет запрос просто так его не передать. Что сделать можно? Помогите, пожалуйста!