Javascript 在带有可选参数的Express中,路由是如何工作的?

Javascript 在带有可选参数的Express中,路由是如何工作的?,javascript,node.js,express,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 在'/post/5/edit'上,打开带有表单的页面,用于编辑当前帖子 一切都很好。但当我试图打开'post/add/时,它不起作用,因为req.params在控制台中显示:id:'add',ed

目前我的路线是这样的:

app.get('/post/:id?/:edit?/:add?') // ... func and something else
当我向url
'/post/'
发送查询时,不带参数,它检索所有帖子

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

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

一切都很好。但当我试图打开
'post/add/
时,它不起作用,因为
req.params
在控制台中显示:
id:'add',edit:undefined,add:undefined

如何修复它?

req.params基本上是一个数组,因此在您的情况下,第一个参数req.params[0]将始终是req.params.id,无论您提供什么值,并且您的程序将认为您试图检索id为“add”的帖子


您可能希望将“post/add”设置为一个单独的路由,这样会更容易。

因此,我认为这是一个在一个路由中添加太多功能的问题。每个函数(get、edit、add)都应该有自己的路由。否则,您会给单路由功能带来很大的开销。另外,对于编辑和添加,你应该使用POST请求(或者如果你真的喜欢PUT&POST),谢谢,很可能我会这样做。