2015-12-03 50 views
0

我已經在一個單獨的route.js文件,如下(細節簡潔,刪除)如何停止在expressjs中丟失請求參數?

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參數在路由器處理程序中不可用。我做錯了什麼?

回答

2

使用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); 
+1

它添加到子路由器不能正常工作。 'req.params'仍然是空的。 – Suhas

+0

@Suhas我發佈了一個適用於我的完整示例(使用'express @ 4.13.3') – robertklep