修改Node.js req对象参数

和往常一样,我试图在SO上find这个问题,但仍然没有运气。

我知道答案是“是的,你可以修改req对象”,但没有说req对象参数。

例如下面的代码会抛出一个错误:

app.get('/search', function(req, res) { req.param('q') = "something"; }); 

错误:

 ReferenceError: Invalid left-hand side in assignment 

我想这是与没有“SET”方法的东西有关。

有几个场景可以派上用场。

  1. 将快速链接转换为完整请求并将其代理出去的服务。
  2. 只需在将参数发送给另一个不需要修改的function之前修改参数。

在这个问题上, 有没有办法修改req对象参数?

而不是:

 req.param('q') = "something"; 

你需要使用:

 req.params.q = "something"; 

第一个是试图设置param函数的返回值,而不是参数本身。

值得注意的是, req.param()方法从req.bodyreq.paramsreq.query中一次按顺序检索值,但要设置一个值,则需要指定这三个值中的哪一个:

 req.body.q = "something"; // now: req.param('q') === "something" req.query.r = "something else"; // now: req.param('r') === "something else" 

这就是说,除非你永久修改从客户端提交的东西,否则最好把它放在别的地方,这样它就不会被你所使用的任何第三方模块误认为是来自客户端的input。

在请求中设置参数的替代方法(使用任何):

  req.params.model = 'Model'; Or req.params['model'] = 'Model'; Or req.body.name = 'Name'; Or req.body['name'] = 'Name'; Or req.query.ids = ['id']; Or req.query['ids'] = ['id']; 

现在得到参数如下:

  var model = req.param('model'); var name = req.param('name'); var ids = req.param('ids'); 

人们也可以想象左边不是一个variables或属性,所以尝试给它赋值是没有意义的。 如果要更改查询参数,则必须修改req.query对象中的属性。

 req.query.q = 'something'; 

req.bodyreq.params