将.param中的req变量传递给.use?

时间:2013-01-14 18:21:28

标签: node.js express middleware

下面的代码演示了如何从中间件中记录req.hash_id。它以undefined的形式出现在我面前。无论如何我能让这个工作吗?或者在常规.use中间件中轻松解析“:hash”?

app.param("hash",function(req, res, next, id){
  req.hash_id = id;
  return next();
});

app.use(function(req, res, next){
  console.log(req.hash_id);
  return next();
});

1 个答案:

答案 0 :(得分:2)

我认为您不能在中间件函数中使用req.params,因为它绑定到特定路由。你可以使用req.query,但是你必须以不同的方式编写你的路线,例如/user?hash=12345abc。不确定是否将值从app.param传递给app.use

如果您的路线有特定的结构,例如/user/:hash,您可以简单地写

// that part is fine
app.param('hash',function(req, res, next, id){
  req.hash_id = id;
  return next();
});

app.all('/user/:hash', function(req, res, next) { // app.all instead app.use
  console.log(req.hash_id);
  next();  // continue to sending an answer or some html
});

// GET /user/steve -> steve