【发布时间】:2019-03-23 07:36:11
【问题描述】:
这是我的 Joi 验证:
let schema = Joi.object().keys({
personal_info: Joi.object().keys({
first_name: Joi.string().min(2).max(10).regex(Regex.alphabeta, 'alphabeta').required().error(JoiCustomErrors),
last_name: Joi.string().min(2).max(10).regex(Regex.alphabeta, 'alphabeta').required().error(JoiCustomErrors),
phone: Joi.string().min(10).max(10).regex(Regex.num, 'num').required().error(JoiCustomErrors),
nickname: Joi.string().min(3).max(12).regex(Regex.alphanum, 'alphanum').required().error(JoiCustomErrors),
birthday: Joi.date().max(`01-01-${new Date().getFullYear()-8}`).required().error(JoiCustomErrors),
IDNumber: Joi.string().min(9).max(9).regex(Regex.num, 'num').required().error(JoiCustomErrors),
address: Joi.object().keys({
city: Joi.string().valid(Cities).required().error(JoiCustomErrors),
street: Joi.string().min(2).max(15).regex(Regex.alphabeta, 'alphabeta').required().error(JoiCustomErrors),
house_number: Joi.string().min(1).max(5).regex(Regex.alphanum, 'alphanum').error(JoiCustomErrors)
})
}),
permission_level: Joi.number().min(1).max(9).required().error(JoiCustomErrors)
});
Joi.validate(req.body, schema, { abortEarly: false }, (err) => {
if (err) return cast.joiError(err);
return create_employee(result);
});
说明:
personal_info 对象内的所有嵌套键都不会被检查。这意味着 - 如果我将 first_name 放在父级上(不在 personal_info 下),它会被模式验证器检查 - 应该是这样。
我做错了什么?
【问题讨论】:
-
问题不清楚,能不能用例子来描述一下。
-
personal_info下的所有嵌套键都不会被检查。这意味着 - 如果我将first_name放在父级(不在personal_info下),它会被模式验证器检查。
标签: javascript node.js validation schema joi