Express API - 验证 req.body 元素

Express API - Verifying req.body elements

本文关键字:body 元素 req 验证 API Express      更新时间:2023-09-26

我使用 express 和 node.js 构建一个 api。

我正在进行基本验证,并希望验证传入的项目是否存在并且是安全的(除了客户端的验证之外还完成)。

所以我有以下几点:

router.post('/register', function(req, res) {
  for (var itemsFromBody in req.body){
    console.log(itemsFromBody);
}

但是,当我检查控制台时,我看到的只是密钥的名称,例如用户名,电子邮件等,而不是值本身。

我如何获得这些?

此外,我将对这些进行验证,例如确保它不为空 - 我是否需要遵循一个简单的 if-then 语句,或者是否存在一些不错的 npm 包可以让我验证?

谢谢!

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

这应该有效!

有用的链接:

  • https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/for...in
  • https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/hasOwnProperty

如果你的所有字段都是必需的,那么错误捕获器进入循环呢?

for (var itemsFromBodyIndex in req.body){
    if (req.body.hasOwnProperty(itemsFromBodyIndex)) {
        console.log(req.body[itemsFromBodyIndex]);
        if(req.body[itemsFromBodyIndex] == null){
            // handle empty field            
        }
    }
}

正如您在上面注意到的,for -- in只会为您提供密钥。您需要使用这些键来获取值

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