我有一个node express 4应用程序,我想在父路由上安装路由(联系人)。即
/: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){});
问题是这个参数调用不会触发。从我可以从文档中获取的这些param调用是相对于它们被声明的路由器,但我会认为mergeParams:true会影响这一点,但事实并非如此。否则该路由正在工作,并且两个路由都被调用。我错过了什么吗?
我想这样做的原因是因为我想在多个父路线上挂载联系路由,并根据这些父参数构建过滤器
答案 0 :(得分:0)
This comment表明参数与声明的路由器相关联;所以在你的情况下,fundid
只能由“基金”路由器处理。 mergeParams
用于不同的目的,即从子路由器提供对req.params.fundid
的访问。
您可以随时在联系路由器中使用请求中间件来执行基于fundid的特殊操作:
router.use(function(req, res, next) {
var id = req.params.fundid;
...
});