规则中的 ozzo 验证对于相等值返回错误
admin 阅读:61 2024-03-18

我有一个简单的代码,使用 echo 作为引擎,使用 ozzo-validation 作为请求验证器。
func (a MyRequest) Validate() error {
return validation.ValidateStruct(
&a,
validation.Field(&a.Value,
validation.Required,
validation.Length(1, 5),
validation.Each(validation.NilOrNotEmpty, validation.In([]string{"true", "false"}),
),
),
)
}这是我发送的请求:
{"value":["true"]}我从 In 规则中收到此错误:
value: (0: must be a valid value.).
但是当我使用 == 和 reflect.DeppEqual 检查值时,值相等:
fmt.Println(reflect.DeepEqual([]string{"true", "false"}[0], a.Value[0]))
fmt.Println([]string{"true", "false"}[0] == a.Value[0])
output:
true
true我在这里做错了什么?
正确答案
使用 validation.Each(validation.In([]string{"true", "false"})) 会将 Value 切片中的每个元素与提供给 validate.In 的切片进行比较,即 []string{ “真”,“假”}。
使用 validation.In("true", "false") 将 Value 切片中的每个元素与 validate.In 中的各个值进行比较。
声明
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!



