2016-01-29 32 views
1

我有一個方法,在我的Node.js後端:如何檢查express/node js中get方法中是否有支持的參數?

app.get('/reports', function(req, res){ 

    var amount = req.param('amount'); 
    var longitude = req.param('long'); 
    var latitude = req.param('lat'); 
    var distance = req.param('distance'); 
    var numberOf = req.param('numberOf'); 

,我使用插件來驗證它的輸入validator.js(https://github.com/chriso/validator.js)。

所以例如用於量它看起來像這樣:

var amount = req.param('amount'); 


    if (amount && !validator.isNumeric(amount)) { 
     return res.status(406).send("Please send a valid amount"); 
    } 

和它的作品非常好,當用戶類型:/reports?amount=aaa,他將得到錯誤。當他鍵入/reports?amount=2時,他會得到過濾結果。但是,例如,當用戶鍵入一些隨機參數時,例如, /reports$randomString=21我想給他回郵件,對不起,但randomString不是一個有效的參數。我怎麼能不知道用戶可以鍵入什麼樣的不同字符串?

回答

1

Express將設置req.query對象,該對象包含請求提供的所有查詢參數。

您可以遍歷此對象來驗證所有參數是否確實有效。

例如:

req.query.keys(o).forEach(function(key) { 
    // your validations here 
    if (key != 'amount' && key != 'long' && ....) { 
    // wrong param, throw error 
    } 
}); 
+0

嘿,對不起,我新的Java腳本,但如果表示'爲(VAR I = 0; I randomuser1

+0

@ randomuser1看到我的編輯 –

+0

還有一件事 - 爲什麼你在這裏完全鍵入「鍵(o)」?這個「(o)」是什麼? – randomuser1

相關問題