Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menyimpan Sekeping Rentetan sebagai JSONB dalam Postgres Menggunakan GORM dan pgtype.JSONB?

Bagaimanakah Saya Boleh Menyimpan Sekeping Rentetan sebagai JSONB dalam Postgres Menggunakan GORM dan pgtype.JSONB?

Susan Sarandon
Susan Sarandonasal
2024-11-20 16:47:39978semak imbas

How Can I Store a Slice of Strings as JSONB in Postgres Using GORM and pgtype.JSONB?

Menggunakan pgtype.JSONB untuk Menyimpan Sepotong Rentetan sebagai JSONB dengan GORM dan Postgres

Pengguna GORM mungkin menghadapi cabaran apabila cuba menyimpan sekeping rentetan sebagai JSONB objek dalam Postgres tanpa bergantung pada jenis khusus GORM (postgres.Jsonb). Artikel ini membincangkan penyelesaian yang menggunakan pgtype.JSONB untuk mengatasi kesukaran ini.

Apabila menggunakan GORM dengan pgx, anda boleh memanfaatkan pakej pgtype untuk mewakili jenis data JSONB. Pakej ini menawarkan jenis pgtype.JSONB, yang menyediakan penyelesaian yang mudah untuk mengurus medan JSONB dalam struct Go anda.

Untuk melaksanakan kaedah ini, hanya tentukan struct anda seperti berikut:

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

Dalam contoh ini, medan Data ditakrifkan sebagai pgtype.JSONB.

Mengakses JSONB Nilai

Untuk mendapatkan semula nilai medan Data daripada pangkalan data, anda boleh menggunakan kaedah AssignTo:

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

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

Menetapkan Nilai JSONB

Untuk mengemas kini medan Data dalam pangkalan data, gunakan kaedah Set:

u := User{}
err := u.Data.Set([]string{"abc", "def"})
if err != nil {
    return
}

db.Updates(&u)

Pendekatan ini memanfaatkan keupayaan pemandu asas, menghapuskan keperluan untuk kod tersuai dan membolehkan pengendalian lancar bagi mana-mana jenis JSONB, bukan hanya []rentetan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyimpan Sekeping Rentetan sebagai JSONB dalam Postgres Menggunakan GORM dan pgtype.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