req.params没有在中间件中传递

时间:2016-06-01 10:43:12

标签: node.js express

我正在尝试阅读并将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);

我正在点击这个网址 -

  

http://localhost:3000/foo/hello

我得到的输出是 -

1 -- { bar: 'hello' }
2 -- undefined

如何将req.params传递给另一个中间件?

2 个答案:

答案 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();
}