2016-02-11 23 views
0

正在使用express和node.js構建api。Express API - 驗證req.body元素

我正在進行基本驗證,並且希望驗證正在傳遞的項目是否存在並且是安全的(除了客戶端驗證之外)。

所以我有下列德:

router.post('/register', function(req, res) { 

    for (var itemsFromBody in req.body){ 
    console.log(itemsFromBody); 

} 

但是當我檢查控制檯所有我看到的是按鍵的名稱如用戶名,電子郵件等,而不是價值本身。

我如何獲得這些?

另外我會對這些做驗證,例如確保它不是空的 - 我是否需要遵循一個簡單的if-then語句或者是否存在一些允許我驗證的很好的npm包?

謝謝!

回答

2
for (var itemsFromBodyIndex in req.body){ 
    if (req.body.hasOwnProperty(itemsFromBodyIndex)) { 
     console.log(req.body[itemsFromBodyIndex]); 
    } 
} 

這應該工作!

相關鏈接:如果您的所有領域都需要

又是怎麼回事錯誤捕手進入死循環?

for (var itemsFromBodyIndex in req.body){ 
    if (req.body.hasOwnProperty(itemsFromBodyIndex)) { 
     console.log(req.body[itemsFromBodyIndex]); 

     if(req.body[itemsFromBodyIndex] == null){ 
      // handle empty field    
     } 

    } 
} 
+0

這很棒 - 所有的作品。 你知道有什麼好的軟件包可以讓我做這樣的驗證,或者我自己的代碼最好嗎? – userMod2

+0

我認爲你自己的代碼對於簡單的測試可能更容易,但對於更復雜的測試,有很多模塊可用。您可以嘗試其中的一種:) https://www.google.fr/search?sourceid=chrome-psyapi2&ion=1&espv=2&ie=UTF-8&q=node%20js%20field%20validation%20module&oq=node%20js%20field %20validation%20module&aqs = chrome..69i57.8119j0j7 –

+0

謝謝。我嘗試了express-validator,它運行良好。然而,我結束了寫作,並使用自己的代碼作爲我需要的簡單應用程序。 – userMod2

0

for -- in只會給你鑰匙,正如你在上面注意到的那樣。你需要使用這些鍵來獲得值

for (var itemsFromBody in req.body){ 
    console.log("Key: " + itemsFromBody + " Value: " + req.body[itemsFromBody]); 
}