0

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

1 に答える 1

2

req.paramsミドルウェア関数は特定のルートにバインドされているため、ミドルウェア関数内で使用できるとは思いません。ただし、使用することもできますreq.queryが、ルートを別の方法で記述する必要があります/user?hash=12345abcapp.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
于 2013-01-14T19:08:38.540 に答える