Heim > Backend-Entwicklung > Golang > Wie verwaltet man JSONB-[]String-Daten in GORM effizient ohne postgres.Jsonb?

Wie verwaltet man JSONB-[]String-Daten in GORM effizient ohne postgres.Jsonb?

Barbara Streisand
Freigeben: 2024-11-26 08:55:10
Original
900 Leute haben es durchsucht

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

JSONB in ​​Gorm mit einem []String bearbeiten

Um eine Liste von Strings als JSONB-Objekt in Postgres mit GORM zu speichern, besteht ein gängiger Ansatz darin, den benutzerdefinierten Typ von GORM zu verwenden , postgres.Jsonb. Um diese Abhängigkeit zu vermeiden, gibt es jedoch eine alternative Lösung:

Verwendung von pgtype.JSONB

Anstatt sich auf den spezifischen Typ von GORM zu verlassen, sollten Sie erwägen, pgtype.JSONB aus dem pgx-Paket zu implementieren, das GORM als verwendet sein Fahrer. So können Sie es in Ihr Modell integrieren:

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

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

Arbeiten mit pgtype.JSONB

Abrufen der tatsächlichen Liste der Zeichenfolgen aus der Datenbank:

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

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

Aktualisierung die Liste der Zeichenfolgen in der Datenbank:

u := User{}

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

db.Updates(&u)
Nach dem Login kopieren

Durch Nutzung Mit pgtype.JSONB können Sie JSONB-Daten in Ihren Go-Modellen bearbeiten, ohne den postgres.Jsonb-Typ von GORM zu verwenden, was einen direkteren und flexibleren Ansatz für die Arbeit mit JSONB in ​​Postgres bietet.

Das obige ist der detaillierte Inhalt vonWie verwaltet man JSONB-[]String-Daten in GORM effizient ohne postgres.Jsonb?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage