像往常一样,我试图在SO上找到这个问题,但仍然没有运气。
我知道答案是“是的,你可以修改req对象”但是没有关于req对象参数的说法。
例如,以下代码将引发错误:
app.get('/search', function(req, res) {
req.param('q') = "something";
});
错误:
ReferenceError: Invalid left-hand side in assignment
我想这与没有“SET”方法的属性有关,或者与这些方法有关。
有几种情况可以派上用场。
在问题上,有没有办法修改req对象参数?
答案 0 :(得分:22)
而不是:
req.param('q') = "something";
您需要使用:
req.params.q = "something";
第一个是尝试在参数函数的返回值上设置一个值,而不是参数本身。
值得注意的是,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"
除非你永久性地修改从客户端提交的内容,否则将它放在其他地方可能会更好,这样就不会被你正在使用的任何第三方模块的客户输入错误。
答案 1 :(得分:3)
在请求中设置params的替代方法(使用any):
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');
答案 2 :(得分:1)
可以想象左侧不是变量或属性,因此尝试为其赋值是没有意义的。如果要更改查询参数,则必须修改req.query
对象中的属性。
req.query.q = 'something';
req.body
和req.params
同样如此。