如何在Express中使用可选参数进行路由?

时间:2017-05-04 15:45:08

标签: javascript node.js express

目前我的路线是这样的:

app.get('/post/:id?/:edit?/:add?') // ... func and something else

当我向url '/post/'发送查询时,如果没有参数,则会检索所有帖子。

'/post/5'上,其中5是post的id,它在db中检索id为5的帖子。

'/post/5/edit'上,打开包含表单的页面,用于编辑当前帖子。

一切都很好。但是,当我尝试打开'post/add/时,它无效。因为req.params在控制台中显示:id: 'add', edit: undefined, add: undefined。 如何解决?

1 个答案:

答案 0 :(得分:0)

req.params基本上是一个数组,所以在你的情况下,第一个参数req.params [0]将永远是req.params.id,无论你提供什么价值,你的程序都会认为你正试图检索ID为“add”的帖子。

您可能希望将“发布/添加”设置为单独的路线,这样会更容易。