簡體   English   中英

Validator v10 獲取單個字段的錯誤列表

[英]Validator v10 get list of error on single field

有沒有辦法為每個失敗的驗證獲取錯誤列表? 目前我只收到一個錯誤,並且來自第一個失敗的驗證。

我正在使用 golang 和 Validator v10

type User struct {
    ID          string   `param:"id" json:"id" validate:"required"`
    Name        string   `json:"name" validate:"required,max=100"`
    Permissions []string `json:"permissions" validate:"permission_list,distinct_list"`
}

因此,如果字段權限在兩者上都失敗,我可以得到結果:

{
    "validationErrors": {
        "permissions": [
            "permissions must be a list of valid permissions",
            "permissions must be uniques",
        ]
    }
}

您需要檢查返回的錯誤。

package main

import (
    "fmt"
    "github.com/go-playground/validator/v10"
)

type User struct {
    FirstName      string     `validate:"required"`
    LastName       string     `validate:"required"`
}

func main() {
    testUser := User{}

    v := validator.New()
    
    if err := v.Struct(testUser); err != nil {
        validationErrors := err.(validator.ValidationErrors)
        for _, validationError := range validationErrors {
            fmt.Println(validationError.Error())
        }
    }
}

示例: https://play.golang.com/p/HFdHrPKiYwF

檢查https://github.com/go-playground/validator/blob/master/errors.go上的代碼,了解ValidationErrorsFieldError上可用的方法。

如果您需要的不僅僅是檢查一個驗證條件然后返回它,而是需要檢查每個失敗的驗證,那么您需要對 package 進行一些增強,就像我的情況一樣。 我需要從第 480 行的驗證器中刪除return語句validator.go

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM