2017-08-06 75 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