Express Router undefined params与router.use分割文件时

whi*_*fin 31 routes node.js express

我不确定这是否是Express中的错误,或者我只是做错了(可能是后者),但我发现req.params只在请求的最后一步保留参数.为了证明我的意思:

工作实例:

router.get('/:id/test', function(req, res){
    // req.params.id is not undefined
});
Run Code Online (Sandbox Code Playgroud)

不起作用:(

档案1:

router.use('/:id', require('./file2'));
Run Code Online (Sandbox Code Playgroud)

文件2:

router.get('/test', function(req, res){
    // req.params.id is undefined?!
});
Run Code Online (Sandbox Code Playgroud)

现在......上面对我来说似乎完全不合逻辑,因为Express生成器以上述方式定义了路径 - 它仍然必须在某个路径中定义.当然我仍然可以访问"id"?

所以基本上,我错过了什么?这是故意/有记录吗?FWIW我正在使用Express v4.12.0.

免责声明:文件可能无关紧要,但最好是安全而不是抱歉.

log*_*yth 52

当你创建你的Routerin时File 2,你需要告诉它继承父母的params.

var router = express.Router({mergeParams: true});
Run Code Online (Sandbox Code Playgroud)

http://expressjs.com/api.html#router