我正在使用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
获取该参数? 最佳答案
我发现express添加了一项功能,可以合并来自父路由器的参数。可以找到here
这样,我可以通过这样声明路由器来解决此问题:
var router = express.Router({mergeParams: true});