修改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”方法的东西有关。
有几个场景可以派上用场。
- 将快速链接转换为完整请求并将其代理出去的服务。
- 只需在将参数发送给另一个不需要修改的function之前修改参数。
在这个问题上, 有没有办法修改req对象参数?
而不是:
req.param('q') = "something";
你需要使用:
req.params.q = "something";
第一个是试图设置param函数的返回值,而不是参数本身。
值得注意的是, req.param()方法从req.body
, req.params
和req.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.body
和req.params
。