如何停止在expressjs中丢失请求参数?

Suh*_*has 1 express

我在一个单独的route.js文件中定义了我的路线如下(为简洁起见,删除了详细信息)

var express = require('express');
var router = express.Router();
router.route('')put(function(req, res){
    console.log(req.params.id); //prints undefined
});
Run Code Online (Sandbox Code Playgroud)

server.js我绘制这条路线如下

var route = require('./routes/route.js');
app.use('/api/use/:id/role', route);
Run Code Online (Sandbox Code Playgroud)

我的路由函数被正确调用,但id参数在路由器处理程序中不可用。我做错了什么吗?

rob*_*lep 6

使用mergeParams选项:

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

完整的独立示例:

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

router.route('').get(function(req, res) {
  console.log('id', req.params.id);
  return res.sendStatus(200);
});

app.use('/api/use/:id/role', router);
Run Code Online (Sandbox Code Playgroud)