我尝试使用 ozzo 来验证固定长度为
13
的电话号码。我如何通过 ozzo 实现这一目标?
这是我的代码:
func RequestCheker(request api.User) error {
return validation.ValidateStruct(&request,
validation.Field(&request.Phone, validation.Required, validation.Length(12,13)),
validation.Field(&request.Firstname, validation.Required, validation.Length(3, 65)),
validation.Field(&request.Lastname, validation.Required, validation.Length(3, 65)),
validation.Field(&request.Password, validation.Required, validation.Length(4, 40)),
)
}
api.用户类型:
type User struct {
gorm.Model
UUID uint32 `gorm:"unique"`
Phone int `json:"phone" gorm:"unique"`
Firstname string `json:"firstname"`
Lastname string `json:"lastname"`
Password string `json:"password"`
}
如何验证数字的固定长度为 13?
我尝试将其从 int 转换为 string 和 rune 但在这两种情况下我都遇到了这个错误:
field #0 cannot be found in the struct
这可能不是是标准解决方案,但它会起作用 而不是使用:
validation.Field(&request.Phone, validation.Required, validation.Length(12,13)),
我们可以使用:
validation.Field(&request.Phone, validation.Required, validation.Min(1000000000000), validation.Max(999999999999))
这将有助于确保长度固定为 13,但我期待有更好的方法,例如为 ozzo 制定自定义规则