Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat GIN Golang semasa mengikat data borang

Ralat GIN Golang semasa mengikat data borang

WBOY
WBOYke hadapan
2024-02-10 13:00:091256semak imbas

绑定表单数据时Golang GIN出错

Editor PHP Xinyi membawakan anda penyelesaian kepada masalah ralat semasa mengikat data borang dalam rangka kerja GIN Golang. Apabila menggunakan rangka kerja GIN untuk pengikatan data borang, anda kadangkala menghadapi beberapa masalah, seperti ketidakupayaan untuk menghuraikan data borang dengan betul. Masalah ini mungkin disebabkan oleh pengikatan parameter, ketidakpadanan jenis data, dsb. Artikel ini akan memperkenalkan cara untuk mengikat data borang dengan betul dan menyelesaikan ralat biasa untuk membantu pembangun berjaya menggunakan rangka kerja GIN untuk kerja pembangunan.

Kandungan soalan

Apabila saya cuba mengikat permintaan data borang pada struct, ia ralat dengan "Fatal Error: Stack Overflow".

Ini kod saya. Tiada apa yang perlu dijelaskan. Saya mula menggunakan kod tetapi tidak dapat memahaminya.

Struktur

type Wish struct {
    ID                int                `gorm:"primarykey;autoIncrement" json:"id"`
    CreatedAt         time.Time          `json:"created_at"`
    UpdatedAt         time.Time          `json:"updated_at"`
    DeletedAt         gorm.DeletedAt     `gorm:"index" json:"deleted_at"`
    UserID            int                `json:"user_id" form:"user_id"`
    User              *User              `gorm:"foreignKey:UserID" json:"user_data,omitempty"`
    WishTypeID        int                `json:"wish_type_id" form:"wish_type_id"`
    WishType          *WishType          `gorm:"foreignKey:WishTypeID" json:"wish_type_data,omitempty"`
    ProcessTrack      []*ProcessTrack    `gorm:"foreignKey:WishID" json:"process_track,omitempty"`
    VacationDateRange *VacationDateRange `gorm:"foreignKey:WishID" json:"vacation_date_range,omitempty"`
    Content           string             `gorm:"type:varchar(255)" json:"content" form:"content"`
    Status            WishStatus         `gorm:"type:integer" json:"status" form:"status"`
    Files             []*File            `gorm:"polymorphic:Module;polymorphicValue:wish_files" json:"files,omitempty"`
}

Pengawal

var wish migrations.Wish
    if err := c.Bind(&wish); err != nil {
        c.JSON(400, gin.H{"error": err.Error(), "message": "Talep Okunamadı!"})
        return
    }
    c.JSON(200, wish)
    return

Minta

Penyelesaian

Saya mengubah suai pengawal

type Req struct {
        Content           string                        `form:"content"`
        WishTypeID        int                           `form:"wish_type_id"`
        VacationDateRange *migrations.VacationDateRange `form:"vacation_date_range"`
    }
    err, i, g := authorizer.AuthorizeIt(c, a.Subject, a.Action)
    if err != nil {
        c.JSON(i, g)
        return
    }
    var wishReq Req
    var wish migrations.Wish
    if err := c.Bind(&wishReq); err != nil {
        c.JSON(400, gin.H{"error": err.Error(), "message": "Wish can't bind."})
        return
    }
    wish.WishTypeID = wishReq.WishTypeID
    wish.Content = wishReq.Content
    wish.VacationDateRange = wishReq.VacationDateRange

Tetapi saya masih tidak faham mengapa ia tidak boleh menjadi gaya pertama. Saya juga telah menambah penggunaan biasa. Ia biasanya berfungsi juga.

err, i, g := authorizer.AuthorizeIt(c, a.Subject, a.Action)
    if err != nil {
        c.JSON(i, g)
        return
    }
    var announce mig.Announce

    err = c.Bind(&announce)
    if err != nil {
        c.JSON(400, gin.H{"error": err.Error(), "message": "Announce can't bind. Error Code: AN-CRT-20"})
        return
    }

Atas ialah kandungan terperinci Ralat GIN Golang semasa mengikat data borang. 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