简体   繁体   English

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

[英]Express: Getting full route parameters

I'm building a node.js application using express framework. 我正在使用Express框架构建一个node.js应用程序。 The app routes are defined in separate files, so basically I have one router per resource. 应用程序路由是在单独的文件中定义的,因此基本上每个资源我都有一个路由器。 Here's an example: 这是一个例子:

app.js app.js

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

fooRoutes.js fooRoutes.js

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

fooController.js 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);
    });
  };
};

The problem is that I cannot get the id parameter from fooController. 问题是我无法从fooController获取id参数。 If I try to log it from the app file, I can get it. 如果尝试从应用程序文件中记录它,则可以获取它。 I guess it's because the route at that point recognizes it as a parameter. 我猜是因为那时候的路由将其识别为参数。

Is there a way to get that parameter from fooController ? 有没有办法从fooController获取该参数?

I've found that express added a feature to merge parameters from parent routers. 我发现express添加了一项功能,可以合并来自父路由器的参数。 This can be found here 可以在这里找到

With this, I can solve it by declaring my router like this: 这样,我可以通过声明路由器来解决此问题:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM