Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menguruskan Data rentetan [] JSONB dengan cekap dalam GORM tanpa postgres.Jsonb?

Bagaimana untuk Menguruskan Data rentetan [] JSONB dengan cekap dalam GORM tanpa postgres.Jsonb?

Barbara Streisand
Lepaskan: 2024-11-26 08:55:10
asal
837 orang telah melayarinya

How to Efficiently Manage JSONB []string Data in GORM without postgres.Jsonb?

Memanipulasi JSONB dalam Gorm dengan []rentetan

Untuk menyimpan senarai rentetan sebagai objek JSONB dalam Postgres menggunakan GORM, pendekatan biasa melibatkan penggunaan jenis tersuai GORM , postgres.Jsonb. Walau bagaimanapun, untuk mengelakkan pergantungan ini, berikut ialah penyelesaian alternatif:

Menggunakan pgtype.JSONB

Daripada bergantung pada jenis khusus GORM, pertimbangkan untuk melaksanakan pgtype.JSONB daripada pakej pgx, yang GORM gunakan sebagai pemandunya. Begini cara anda boleh memasukkannya ke dalam model anda:

import (
    "github.com/jackc/pgx"
    "github.com/jackc/pgx/pgtype"
)

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

Bekerja dengan pgtype.JSONB

Mengambil semula senarai rentetan sebenar daripada pangkalan data:

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

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

Mengemas kini senarai rentetan dalam pangkalan data:

u := User{}

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

db.Updates(&u)
Salin selepas log masuk

Dengan memanfaatkan pgtype.JSONB, anda boleh memanipulasi data JSONB dalam model Go anda tanpa menggunakan jenis postgres.Jsonb GORM, memberikan pendekatan yang lebih langsung dan fleksibel untuk bekerja dengan JSONB dalam Postgres.

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

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan