Javascript 快速验证器测试项目';独立s数组
我试图在包含数组的对象上添加验证链; 此数组包含必须根据对象的某个字段进行不同测试的对象, 以下是一个例子:Javascript 快速验证器测试项目';独立s数组,javascript,express,express-validator,Javascript,Express,Express Validator,我试图在包含数组的对象上添加验证链; 此数组包含必须根据对象的某个字段进行不同测试的对象, 以下是一个例子: { "title" : "my title", "sections" : [ { "type": "A", "optionsA" : {...} }, { "type": "B", "opt
{
"title" : "my title",
"sections" : [
{
"type": "A",
"optionsA" : {...}
},
{
"type": "B",
"optionsB" : {...}
},
{
"type": "A",
"optionsA" : {...}
},
{
"type": "C",
"optionsC" : {...}
},
]
}
有没有办法做到这一点?我尝试使用OneOf()对每个部分进行特定的测试,但没有成功,虽然这个解决方案需要做更多的工作,但我认为它是最直接和可维护的 下载
验证程序
&为空
包
使用这个包,您可以通过大量的控制来验证JSON对象。所以我用它来验证我的req.body
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)
};
};
所以发生的事情是,我用数据调用这个函数,我可以用点符号嵌套到数组或对象中
在主文件中,我有这个
const { errors, isValid } = validateRegisterInput(req.body);
如果有任何错误,那么它们将出现在errors对象中。如果是有效的,那么将是错误的。否则,如果它是空的,那么is valid就是真的,你就可以走了。我希望这有帮助。如果你需要更多的澄清,我会帮你的