Expressjs修改express.Router中的req.params

时间:2016-08-19 22:14:40

标签: node.js express

根据文件here 我应该能够修改请求对象。这是一个不适合我的例子:

var express = require('express');
var router = express.Router();
router.use(function (req, res, next) {
  req.params.time = Date.now();
  next();
});
router.get('/', function(req, res) {
  console.log('Time: ', req.params.time);
  res.send('Something out');
});
module.exports = router;

关于如何做到这一点的想法? (节点v6.4.0,npm 3.10.3,表达4.14.0)

2 个答案:

答案 0 :(得分:1)

我会做出有根据的猜测并说Express使用请求GET参数重新填充req.params对象。相反,做这样的事情:

req.time = Date.now();

// snip

console.log(`Time: ${req.time}`);

答案 1 :(得分:1)

Params仅在路径定义具有参数时才可用 - 在您的示例中不是这种情况。

通常你会这样使用params:

router.get('/:id', function(req, res) {
  console.log(req.params.id);
});

因此,添加参数time将允许您修改它。 但我认为这不是你想要的 - 因为你必须改变URL。所以最好使用像

这样的东西
req.somevariable = variable;

使用next();

将其传递给下一个中间件