问题描述
您好,我正在使用 "@hapi/joi": "^15.1.1"
。很遗憾,我现在无法更新到最新的 Joi 版本。
这是我的验证架构
const schema = {
name: Joi.string()
.allow("")
.max(30),addLine1: Joi.string()
.required()
.label("Address Line 1"),locality: Joi.string()
.required()
.label("City"),region: Joi.string()
.required()
.label("State"),zipCode: Joi.number()
.required()
.label("Zip Code"),phoneNo: Joi.string()
.required("required")
.regex(/^[0-9]{3}\-[0-9]{3}\-[0-9]{4}$/)
};
const result = Joi.validate(this.state.addressDetails,this.schema,{
abortEarly: true,});
return const errors = result.error.details[0].message;
这有效。唯一的问题是我想显示自定义错误消息而不是默认错误消息。
地址的默认错误消息是 "Address Line 1" is not allowed to be empty"
而不是这个,我想显示 "Address is required!"
对于正则表达式,默认是
phoneNo with value "555" fails to match the required pattern: /^[0-9]{3}\-[0-9]{3}\-[0-9]{4}$/
相反,我想显示 please enter a valid phone number
我如何使用版本 15.1.1
实现这一点。
较新的版本 messages
在这里无济于事。
解决方法
尝试从 .error
回调中返回消息
addLine1: Joi.string()
.required()
.label("Address Line 1").error(()=>'"Address Line 1" is not allowed to be empty'),