如何验证 ozzo-go 中的号码长度

问题描述 投票:0回答:1

我尝试使用 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 转换为 stringrune 但在这两种情况下我都遇到了这个错误:

field #0 cannot be found in the struct
go validation
1个回答
0
投票

这可能不是是标准解决方案,但它会起作用 而不是使用:

validation.Field(&request.Phone, validation.Required, validation.Length(12,13)),

我们可以使用:

validation.Field(&request.Phone, validation.Required, validation.Min(1000000000000), validation.Max(999999999999))

这将有助于确保长度固定为 13,但我期待有更好的方法,例如为 ozzo 制定自定义规则

© www.soinside.com 2019 - 2024. All rights reserved.