如何在node.js / express路由器中声明一个强制参数

我有一系列的路线,如:

var router = express().Router; router.get('/',middleware1,middleware2); router.get('/courses',middleware1,middleware2,..) router.post('/dates',middleware1,middleware2,..) app.use('/u',router); 

现在,当我声明的路线的根

 app.use('/u',router); 

我想把一个强制性的参数,必须出现在微型应用程序的每一个路线

 app.use('/u/:user_name/',router); 

所以我可以检查每个路由与router.param存在这个参数在数据库中。

是这样的可能性,通过定义在微应用程序的根,而不是像每一个单一的路线参数

 router.get('/:user_name/',middleware1,middleware2); router.get('/:user_name/courses',middleware1,middleware2,..) router.post('/:user_name/dates',middleware1,middleware2,..) 

因为它们在实际应用中实际上是很多的,将它们全部改变是一种痛苦?

真的感谢 !

只要您使用的是最新版本的Express,您应该可以使用mergeParams来完成此操作。

 var router = express.Router({mergeParams: true}); 

那么这将工作:

 app.use('/u/:user_name/', router); 

mergeParamslogging在这里:

https://expressjs.com/en/4x/api.html#express.router