У меня есть страницы: категория и товар (карточка). Я отправляю гет запрос с двумя динамическими параметрами. Например, localhost:3000/category-example/jeans. После этого я хочу проверить есть ли второй запрос (jeans) в первом запросе (category-example). Каждая карточка содержит в себе массив с айдишниками категорий в которых она присутствует. При переходе на товар я должен проверить существует ли товар этот в той категории, по которой перешел пользователь. Чтобы при переходе на localhost:3000/category-error/jeans показывало ошибку пользователю. Как можно это реализовать ? Я придумал только перебрать массив с айдишниками и если там нет моего айдишника категории, то выдавать ошибку. Но правильно ли это?
Вот обработка запроса:
exports.getCard = asyncHandler(async (req, res, next) => {
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)
);
}
const tag = card.tags.filter(item => req.params.tag == item.tag);
if (tag.length == 0) {
return next(
new ErrorResponse(`Not found with slug of ${req.params.card}`, 404)
);
}
res.status(200).json(card);
});
Сначала я смотрю есть ли сам товар и в зависимости от ответа вывожу либо ошибку либо перенаправляю на страницу.
Затем я беру категории у карточки(товара) и сверяю их с моим динамическим параметром категории. И если он есть, то все гуд, а если нет - вывожу ошибку.
Правильно ли я поступаю в этом случае?