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
Barbara Streisandasal
2024-11-26 08:55:10893semak imbas

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"`
}

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
}

Mengemas kini senarai rentetan dalam pangkalan data:

u := User{}

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

db.Updates(&u)

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!

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