即使tel
设置为可选,Joi也会返回以下错误。我们如何解决这个问题?
感谢。
错误:Joi失败:ValidationError:子“tel”失败,因为[“tel”不允许为空]
//Define Joi schema
const schema = {
email: Joi.string().required().email({
errorLevel: 64,
minDomainAtoms: 2
}).min(6),
tel: Joi.string().optional().min(10).max(10),
password: Joi.string().required().min(8).max(64)
}
//Check inputs
const { error, value } = Joi.validate({
email: args.email,
tel: tel,
password: args.password
}, schema)
答案 0 :(得分:5)
...默认情况下不允许使用空字符串,必须启用它
allow('')
。但是,如果要在大小写中指定默认值 空字符串你必须使用不同的模式:Joi.string().empty('').default('default value')
。这告诉了Joi 空字符串应该被视为空值(而不是 无效)以及默认使用的值。
在你的情况下:
tel: Joi.string().optional().allow('').min(10).max(10)