Node.js Express 4 router.param未启动
我有一个node express 4应用程序,我想在父路由上挂载路由(联系人)。i、 eNode.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
/: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()
是一种设计选择。