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
Barbara StreisandOriginal
2024-11-26 08:55:10898Durchsuche

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

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
}

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)

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!

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