在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=
它表明使用旧语法传递的变量按预期到达,但不会到达其他变量。
答案 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
是正确的。
如果您使用POST
或PUT
,则需要使用req.body.MYVAR
,因为数据是在正文中传输的。由于快递不解析正文,您需要包含并使用其他包,例如body-parser