node js - 从原始基本URL获取url参数

时间:2015-02-19 17:23:47

标签: node.js express

在我的节点JS express app中我已经在我的app.js文件中定义了具有正则表达式的路径的路由。即

var tableRoute = require('./routes/tables');
app.use('/keyspaces/(regex to match param)/tables',tableRoute);

然后在我的routes / tables.js文件中,我为此路由定义了以下处理程序

router.get('/', function(req, res, next) {
// need to access url param here
});

现在显然我无法通过req.params.xzy访问我的url param,因为这里的处理程序定义为' /'不是' / keyspaces /:xzy / tables',有什么方法可以从原始基本网址访问此网址参数。

2 个答案:

答案 0 :(得分:3)

您可以添加中间件来处理它。 在您的示例中:

var tableRoute = require('./routes/tables');
app.use('/keyspaces/:xzy/tables',function(req,res,next){
  req.xyz=req.params.xyz;
  next();
},tableRoute);

然后在路线表中,您可以访问它并自行设置req.params:

router.get('/', function(req, res, next) {
  req.params.xyz = req.xyz;
});

答案 1 :(得分:0)

请参阅此comment

对我来说,它只能调用下一个中间件, 否则他将在第一个中间件调用结束

像这样:

var tableRoute = require('./routes/tables');
app.use('/keyspaces/:xzy/tables',function(req,res,next){
    req.xyz=req.params.xyz;
    next();
},tableRoute);

然后你可以添加:

router.get('/', function(req, res, next) {
   req.params.xyz = req.xyz;
});