Wie kann ich JSONB-Daten in Gorm effizient verarbeiten, ohne postgres.Jsonb zu verwenden?

Susan Sarandon
Freigeben: 2024-11-25 03:36:11
Original
653 Leute haben es durchsucht

How Can I Efficiently Handle JSONB Data in Gorm Without Using postgres.Jsonb?

JSONB mit Gorm und Postgres ohne postgres.Jsonb verwenden

Bei der Arbeit mit Postgres in Golang ist es oft notwendig, JSONB-Datentypen zu manipulieren. Gorm, eine ORM-Bibliothek (Object-Relational Mapping) für Go, bietet eine praktische API für die Interaktion mit Datenbanken. Der Standardansatz für die Verarbeitung von JSONB erfordert jedoch die Verwendung des dedizierten Typs postgres.Jsonb.

Um die direkte Verwendung dieses Typs in Modellen zu vermeiden, sollten Sie stattdessen die Verwendung von pgtype.JSONB in ​​Betracht ziehen. Dieser Typ wird vom Paket pgtype angeboten, einer Begleitbibliothek zu pgx, dem zugrunde liegenden Treiber von Gorm. pgtype bietet eine flexiblere und effizientere Möglichkeit, mit JSONB-Daten zu arbeiten.

Implementierung

Definieren Sie in Ihrer Go-Struktur ein Feld zum Speichern der JSONB-Daten wie folgt:

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

Lesen und Schreiben von JSONB-Daten

Um JSONB-Daten aus dem abzurufen Datenbank:

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

var data []string

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

So legen Sie JSONB-Daten für ein Update fest:

u := User{}

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

db.Updates(&u)
Nach dem Login kopieren

Die Verwendung von pgtype.JSONB bietet eine bessere Alternative zur Manipulation von JSONB-Daten in Gorm. Durch die direkte Verwendung des Typs vermeiden Sie die Einschränkungen und potenziellen Komplikationen bei der Arbeit mit postgres.Jsonb.

Das obige ist der detaillierte Inhalt vonWie kann ich JSONB-Daten in Gorm effizient verarbeiten, ohne postgres.Jsonb zu verwenden?. 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