2015-12-30 104 views
0

我正在使用express框架構建node.js應用程序。 應用程序路由是在單獨的文件中定義的,所以基本上每個資源都有一個路由器。這裏有一個例子:快速:獲取完整路由參數

app.js

var fooRoutes = require('./fooRoutes.js'); 
... 
router.use('/users/:id/foos',fooRoutes); 

fooRoutes.js

var fooController = require('./../controllers/fooController.js'); 
router.get('/', function(req, res) { 
    fooController.getFoos(req, res); 
}); 

fooController.js

var FooController = function() { 
    this.getFoos = function(req, res) { 
    var foos = []; 
    fooService.findFoosByUser(req.params.id, function(err, recordset) { 
     if (err) { 
     res.send(400, err); 
     } 
     res.send(200, recordset); 
    }); 
    }; 
}; 

的問題是,我無法從FooController的的id參數。如果我嘗試從應用程序文件中記錄它,我可以得到它。我想這是因爲那時候的路線認識到它是一個參數。

有沒有辦法從fooController獲取該參數?

回答

1

我發現快遞添加了一項功能,可以從父路由器合併參數。這可以發現here

有了這個,我可以說出我的路由器是這樣解決的:

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