Express req.param弃用语法

时间:2017-08-06 09:57:07

标签: javascript node.js express

在Node.js上我在一些JavaScript代码中收到此错误:

express deprecated req.param(name): Use req.params, req.body, 

以下是相关代码:

  response.render('pages/' + displayPage, {
    MYVAR: request.param('MYVAR'),
    MYVAR2: request.MYVAR,
    MYVAR3: request.params.MYVAR
  });

换句话说,这一行已被弃用

   MYVAR: request.param('MYVAR'),

但是,它完成了这项工作(至少目前为止)。

我尝试的其他类型的语法,通过猜测或在搜索后在网上查找,都失败了。 包括这些行:

MYVAR2: request.MYVAR,
MYVAR3: request.params.MYVAR

还有一些选项在这里列出毫无意义。 所以问题是:使用什么语法是正确的?

以下是一些更多信息,通过在阅读一些评论后编辑帖子而添加:

我以这种方式发送请求参数:

https://myapp.herokuapp.com/branch?MYVAR=64.39

在index.js中,处理/ branch的代码是:

response.render('pages/' + displayPage, {
  MYVAR: request.param('MYVAR'),
  MYVAR2: request.params.MYVAR,
  MYVAR3: request.params['MYVAR']
});

在branch.ejs文件中,我已经放置了以下内容,以便了解我的内容:

<body bgcolor=#221122E>
<b>MYVAR=<%= MYVAR %></b><br/>
<b>MYVAR2=<%= MYVAR2 %></b><br/>
<b>MYVAR3=<%= MYVAR3 %></b><br/>
......

最后这是我在浏览器中看到的,由branch.ejs显示:

MYVAR=64.39
MYVAR2=
MYVAR3=

它表明使用旧语法传递的变量按预期到达,但不会到达其他变量。

2 个答案:

答案 0 :(得分:1)

而不是使用:

request.param('MYVAR')

你应该使用:

request.params['MYVAR']
// Or this:
request.params.MYVAR

答案 1 :(得分:1)

需要哪些变体取决于您发送请求参数的方式:

  • 如果您的请求在req.query.MYVAR GET之后使用?方法,则需要使用/path?MYVAR=123

  • 如果您的路径中有参数(例如,在/path/:MYVAR来电中get),则req.params.MYVAR是正确的。

  • 如果您使用POSTPUT,则需要使用req.body.MYVAR,因为数据是在正文中传输的。由于快递不解析正文,您需要包含并使用其他包,例如body-parser