修改Node.js req对象参数

Lev*_*rts 9 javascript node.js express

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

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

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

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

错误:

ReferenceError: Invalid left-hand side in assignment
Run Code Online (Sandbox Code Playgroud)


我想这与没有"SET"方法的属性有关,或者与这些方法有关.

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

  1. 一种服务,可以将快速链接转换为完整的请求,并代理这些请求.
  2. 只需修改参数,然后再将其发送到您不想修改的其他功能.

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

Roy*_*iss 24

而不是:

req.param('q') = "something";
Run Code Online (Sandbox Code Playgroud)

你需要使用:

req.params.q = "something";
Run Code Online (Sandbox Code Playgroud)

第一个是尝试在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"
Run Code Online (Sandbox Code Playgroud)

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