首頁  >  文章  >  後端開發  >  規則中的 ozzo 驗證對於相等值傳回錯誤

規則中的 ozzo 驗證對於相等值傳回錯誤

WBOY
WBOY轉載
2024-02-05 22:48:03821瀏覽

规则中的 ozzo 验证对于相等值返回错误

問題內容

我有一個簡單的程式碼,使用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 中的各個值進行比較。

以上是規則中的 ozzo 驗證對於相等值傳回錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除