2017-08-06 76 views
-1

在Node.js的,我得到这个错误,在一些JavaScript代码:快递req.param弃用语法

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码处理/分支是:

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

在branch.ej里面S档我已经把下面为了看看我越来越:

<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

“失败”......怎么样?这是“POST”还是“GET”请求?什么是网址? –

+1

“但是,它完成了工作(至少现在是这样)”但它可能不会持续很长时间。检查了这一点:https://stackoverflow.com/questions/28949266/replacement-for-req-param-that-is-deprecated-in-express-4 – Thomas

+1

我认为它的request.params.MYVAR –

回答

1

而不是使用:

request.param('MYVAR') 

你应该使用:

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

这是必要的变种取决于你如何发送请求参数:

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

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

  • 如果使用POSTPUT,则需要使用req.body.MYVAR,因为数据是在正文中传输的。由于快递不解析身体,你需要包括和使用一个额外的包如body-parser