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

Ralat GIN Golang semasa mengikat data borang

WBOY
Lepaskan: 2024-02-10 13:00:09
ke hadapan
1307 orang telah melayarinya

绑定表单数据时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"`
}

Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
    }
Salin selepas log masuk

Atas ialah kandungan terperinci Ralat GIN Golang semasa mengikat data borang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan