快递:获取完整的路线参数

时间:2015-12-30 17:50:12

标签: javascript node.js express routing

我正在使用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 个答案:

答案 0 :(得分:1)

我发现express添加了一个功能来合并来自父路由器的参数。可以找到here

有了这个,我可以通过声明我的路由器来解决它:

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