在我的节点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',有什么方法可以从原始基本网址访问此网址参数。
答案 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;
});