I’m trying to make a website that show you all the restaurants in the country with all th different cities. I add a route for restaurants that use params to redirect you to the restaurant page.
router.get('/:name',checkUser, async (req, res) => {
try {
const wila = await wilaya.findOne({nom : req.params.name})
const re = await restaurant.find({ville : wila.nom})
res.render('html/villeDetails', {
wilay: wila,
title : wila.nom,css : "villeDetails",
resto : re
})
} catch {
res.redirect('/')
}
})And another route that also use params to take you to the city details page
router.get('/:id',checkUser, async (req, res) => {
try {
console.log('here')
const resto = await restaurant.findById(req.params.id)
comment.find({resId : req.params.id})
.then((result) => {
res.render('html/restaurantDetails', {
res: resto,
title : resto.nom,
css : "restaurantDetails",
comm : result
})
})
} catch {
res.redirect('/')
}
})The problem is that only the restaurant route is working and when i delete the restaurant route, the city route start working . i don’t know why this is happening .
Advertisement
Answer
/:name and /:id are both on the same route(/). I have noticed that when this happens only the route that is seen first (/:name) would be recognised. You can try changing the route for one of them like /:name for the restaurant route and /restaurant/:id for the city route.