首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >独立的Express-validator测试项数组

独立的Express-validator测试项数组
EN

Stack Overflow用户
提问于 2021-04-23 23:39:36
回答 1查看 30关注 0票数 0

我试图在一个包含数组的对象上添加一个验证链;这个数组包含必须根据对象的某个字段进行不同测试的对象,下面是一个示例:

代码语言:javascript
复制
{ 
"title" : "my title",
"sections" : [
  {
  "type": "A",
  "optionsA" : {...}
  },
  {
  "type": "B",
  "optionsB" : {...}
  },
  {
  "type": "A",
  "optionsA" : {...}
  },
  {
  "type": "C",
  "optionsC" : {...}
  },
 ] 
} 

有没有办法做到这一点?我尝试使用OneOf()对每个部分进行特定的测试,但没有成功

EN

回答 1

Stack Overflow用户

发布于 2021-04-23 23:51:50

虽然这个解决方案需要做更多的工作,但我认为它是最简单和可维护的。

下载《Validator Is-empty**packages** &

使用这个包,你可以对JSON对象进行大量的控制。所以我像这样使用它来验证我的req.body

代码语言:javascript
复制
const Validator = require('validator');
const isEmpty = require('is-empty');

module.exports = function validateRegiterInput(data) {
    let errors = {};

    //Convert empty fields to a empty string so we can use validator functions
    data.firstName = !isEmpty(data.firstName) ? data.firstName : "";
    data.lastName = !isEmpty(data.lastName) ? data.lastName : "";
    data.email = !isEmpty(data.email) ? data.email : "";
    data.password = !isEmpty(data.password) ? data.password : "";

    //school, schoolname? tbd


    //Name check 
    if (Validator.isEmpty(data.firstName)) {
        errors.firstName = "First name is required!"
    }
    if (Validator.isEmpty(data.lastName)) {
        errors.lastName = "Last name is required!"
    }

    //Email check 
    if (Validator.isEmpty(data.email)) {
        errors.email = "Email field is required!";
    } else if (!Validator.isEmail(data.email)) {
        errors.email = "Email is invalid!";
    }

    //Password check 
    if (Validator.isEmpty(data.password)) {
        errors.password = "Password field is required!";
    }
    if (!Validator.isLength(data.password, { min: 6, max: 30 })) {
        errors.password = "Password must be at least 6 characters!";
    }


    return {
        errors,
        isValid: isEmpty(errors)
    };
};

所以发生的事情是,我用我的数据调用这个函数,并且我能够使用点符号嵌套到数组或对象中。

在主文件中,我有以下内容

代码语言:javascript
复制
  const { errors, isValid } = validateRegisterInput(req.body);

如果有任何错误,那么它们将出现在errors对象中。并且有效将是假的。否则,如果它是空的,is valid就是true,你就可以正常工作了。我希望这对你有所帮助。如果你需要更多的澄清,我在这里帮助你

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67232961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档