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

时间:2015-12-03 22:00:53

标签: express

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

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

并在server.js我将此路线映射如下

var route = require('./routes/route.js');
app.use('/api/use/:id/role', route);

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

1 个答案:

答案 0 :(得分:3)

使用mergeParams选项:

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

完全独立的示例:

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);