Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Bekerja dengan Data JSONB dalam GORM tanpa postgres.Jsonb?

Bagaimana untuk Bekerja dengan Data JSONB dalam GORM tanpa postgres.Jsonb?

Patricia Arquette
Patricia Arquetteasal
2024-11-20 02:25:02443semak imbas

How to Work with JSONB Data in GORM without postgres.Jsonb?

Bekerja dengan JSONB dalam GORM tanpa postgres.Jsonb

Apabila menggunakan GORM dengan PostgreSQL, anda mungkin menghadapi situasi di mana anda ingin menyimpan tatasusunan rentetan sebagai objek JSONB. Walaupun GORM menyediakan jenis postgres.Jsonb untuk tujuan ini, anda mungkin memilih untuk mengelak daripada menggunakannya. Dalam artikel ini, kami akan meneroka kaedah alternatif untuk memanipulasi JSONB menggunakan GORM tanpa bergantung pada jenis postgres.Jsonb.

Menggunakan pgtype.JSONB

Pendekatan yang disyorkan melibatkan menggunakan pgtype.JSONB, jenis yang disediakan oleh pemacu pgx yang digunakan oleh GORM. pgtype.JSONB menawarkan cara yang mudah dan cekap untuk berinteraksi dengan lajur JSONB. Berikut ialah contoh:

type User struct {
    gorm.Model
    Data pgtype.JSONB `gorm:"type:jsonb;default:'[]';not null"`
}

Mendapatkan semula Data JSONB

Untuk mendapatkan semula nilai JSONB daripada pangkalan data, tetapkan ia kepada pembolehubah:

u := User{}
db.find(&u)

var data []string
err := u.Data.AssignTo(&data)
if err != nil {
    // Handle error
}

Menyimpan Data JSONB

Untuk menyimpan nilai JSONB dalam pangkalan data, gunakan kaedah Set:

u := User{}
err := u.Data.Set([]string{"abc", "def"})
if err != nil {
    // Handle error
}
db.Updates(&u)

Dengan menggunakan pgtype.JSONB, anda memperoleh fleksibiliti dan keserasian dengan pelbagai jenis JSONB melangkau tatasusunan rentetan mudah. Pendekatan ini sejajar dengan keupayaan pemandu asas GORM, memastikan prestasi optimum dan interaksi pangkalan data yang boleh dipercayai.

Atas ialah kandungan terperinci Bagaimana untuk Bekerja dengan Data JSONB dalam GORM tanpa postgres.Jsonb?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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