Node.js Express 4 router.param未启动

Node.js Express 4 router.param未启动,node.js,express,Node.js,Express,我有一个node express 4应用程序,我想在父路由上挂载路由(联系人)。i、 e /:fundid/contacts 在我的资金路线中,我宣布 var router = require('express').Router({ mergeParams: true }); var contactRoutes = require('./contacts'); router.use('/:fundid/contacts', contactRoutes); 在我的联络路线上 var rout

我有一个node express 4应用程序,我想在父路由上挂载路由(联系人)。i、 e

/:fundid/contacts
在我的资金路线中,我宣布

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

var contactRoutes = require('./contacts');
router.use('/:fundid/contacts', contactRoutes);
在我的联络路线上

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

router.param('fundid', function(res, req, next, id){});
问题是这个参数调用没有启动。从我从文档中得到的信息来看,这些参数调用是相对于它们声明的路由器的,但我认为mergeParams:true会影响这一点,但它不会。否则,该路由正在工作,并且两个路由都被调用。我错过什么了吗

我之所以要这样做,是因为我想在多个父路由上挂载联系人路由,并基于这些父参数构建一个过滤器

建议将参数绑定到它们声明的路由器;因此,在您的情况下,
fundid
只能由“基金”路由器处理
mergeParams
有不同的用途,即提供从子路由器访问
req.params.fundid

您始终可以在联系人路由器中使用请求中间件,根据fundid执行特殊操作,不过:

router.use(function(req, res, next) {
  var id = req.params.fundid;
  ...
});

这正是我所做的。我想知道它为什么会这样?我原以为如果参数不存在,param调用就会发生。谢谢你@ojf显然,在路由中声明参数的路由器上调用
param()
是一种设计选择。