Rumah >pembangunan bahagian belakang >Golang >pengesahan ozzo dalam peraturan mengembalikan ralat untuk nilai yang sama

pengesahan ozzo dalam peraturan mengembalikan ralat untuk nilai yang sama

WBOY
WBOYke hadapan
2024-02-05 22:48:03876semak imbas

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

Kandungan soalan

Saya ada kod mudah yang menggunakan echo 作为引擎,使用 ozzo-validation sebagai pengesah permintaan.

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"}),
            ),
        ),
    )
}

Ini adalah permintaan yang saya hantar:

{"value":["true"]}

Saya mendapat ralat ini daripada peraturan In:

value: (0: must be a valid value.).

Tetapi apabila saya menyemak nilai menggunakan ==reflect.DeppEqual nilainya adalah sama:

fmt.Println(reflect.DeepEqual([]string{"true", "false"}[0], a.Value[0]))
fmt.Println([]string{"true", "false"}[0] == a.Value[0])


output:
true
true

Apa salah saya di sini?


Jawapan betul


guna validation.Each(validation.In([]string{"true", "false"})) 会将 Value 切片中的每个元素与提供给 validate.In 的切片进行比较,即 []string{ “真”,“假”}.

Gunakan nilai individu dalam validation.In("true", "false")Value 切片中的每个元素与 validate.In untuk perbandingan.

Atas ialah kandungan terperinci pengesahan ozzo dalam peraturan mengembalikan ralat untuk nilai yang sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam