我正在尝试阅读并将req.params传递给另一个中间件。但我得到一个空对象作为回应。
var app = require('express')();
app.get('/foo/:bar', function(req,res, next) {
console.log('1 --', req.params);
next();
});
app.use(function(req, res, next) {
console.log('2 --', req.params);
res.end();
})
app.listen(3000);
我正在点击这个网址 -
我得到的输出是 -
1 -- { bar: 'hello' }
2 -- undefined
如何将req.params传递给另一个中间件?
答案 0 :(得分:0)
AFAIK,req.params
仅在显式设置参数的处理程序中可用。
这样可行:
app.get('/foo/:bar', function(req,res, next) {
console.log('1 --', req.params);
next();
});
app.use('/foo/:bar', function(req, res, next) {
console.log('2 --', req.params);
res.end();
});
如果您不想这样,您需要在不同的属性中保留对params的引用:
app.get('/foo/:bar', function(req,res, next) {
console.log('1 --', req.params);
req.requestParams = req.params;
next();
});
app.use(function(req, res, next) {
console.log('2 --', req.requestParams);
res.end();
});
答案 1 :(得分:0)
//route
app.get('/foo/:bar', yourMiddleware, function(req, res) {
res.send('params: ' + req.params);
});
//middleware
function yourMiddleware(req, res, next) {
console.log('params in middleware ' + req.params);
next();
}