一尘不染

修改Node.js请求对象参数

node.js

因此,像往常一样,我尝试在SO上找到这个问题,但还是没有运气。

我知道答案是“是的,您可以修改req对象”,但是关于req对象参数什么也没说。

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

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

错误:

ReferenceError: Invalid left-hand side in assignment

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

在某些情况下可以派上用场。

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

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


阅读 251

收藏
2020-07-07

共1个答案

一尘不染

而不是:

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

您需要使用:

req.params.q = "something";

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

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

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

也就是说,除非您要永久修改从客户端提交的内容,否则最好将其放在其他位置,以免被您使用的任何第三方模块误认为来自客户端的输入。

2020-07-07