两条路线使用参数,但只有一条路线有效
Two routes use params but only one is working
我正在尝试制作一个网站,向您展示该国所有不同城市的所有餐馆。
我为使用参数将您重定向到餐厅页面的餐厅添加了一条路线。
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('/')
}
})
还有一条同样使用参数将您带到城市详细信息页面的路线
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('/')
}
})
问题是只有餐厅路线有效,当我删除餐厅路线时,城市路线开始工作。
我不知道为什么会这样。
/:name
和 /:id
都在同一条路线上 (/
)。我注意到,当发生这种情况时,只会识别出首先看到的路线 (/:name
)。您可以尝试更改其中之一的路线,例如 /:name
餐厅路线和 /restaurant/:id
城市路线。
是的。当您使用 /:id
、/:name
或 /:post_id
等命名路径参数时,您正在做的事情是告诉 express 路由器您将在 URI 的该段中传递“某物”,并且您希望将其存储在具有该名称的变量中。它不知道您传递的是 ID、名称还是其他内容。为此使用嵌套路由。我建议您查看 this guide
我正在尝试制作一个网站,向您展示该国所有不同城市的所有餐馆。 我为使用参数将您重定向到餐厅页面的餐厅添加了一条路线。
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('/')
}
})
还有一条同样使用参数将您带到城市详细信息页面的路线
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('/')
}
})
问题是只有餐厅路线有效,当我删除餐厅路线时,城市路线开始工作。 我不知道为什么会这样。
/:name
和 /:id
都在同一条路线上 (/
)。我注意到,当发生这种情况时,只会识别出首先看到的路线 (/:name
)。您可以尝试更改其中之一的路线,例如 /:name
餐厅路线和 /restaurant/:id
城市路线。
是的。当您使用 /:id
、/:name
或 /:post_id
等命名路径参数时,您正在做的事情是告诉 express 路由器您将在 URI 的该段中传递“某物”,并且您希望将其存储在具有该名称的变量中。它不知道您传递的是 ID、名称还是其他内容。为此使用嵌套路由。我建议您查看 this guide