修改Node.js req对象参数

时间:2013-09-14 12:17:29

标签: node.js express javascript

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

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

例如,以下代码将引发错误:

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

错误:

ReferenceError: Invalid left-hand side in assignment


我想这与没有“SET”方法的属性有关,或者与这些方法有关。

有几种情况可以派上用场。

  1. 一种服务,可以将快速链接转换为完整的请求并代理这些请求。
  2. 在将参数发送给您不想修改的其他功能之前,只需修改参数即可。
  3. 在问题上,有没有办法修改req对象参数?

3 个答案:

答案 0 :(得分:22)

而不是:

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

您需要使用:

req.params.q = "something";

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

值得注意的是,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"

除非你永久性地修改从客户端提交的内容,否则将它放在其他地方可能会更好,这样就不会被你正在使用的任何第三方模块的客户输入错误。

答案 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.bodyreq.params同样如此。