Wie kann ich mit GORM und pgtype.JSONB ein Stück Strings als JSONB in ​​Postgres speichern?

Susan Sarandon
Freigeben: 2024-11-20 16:47:39
Original
875 Leute haben es durchsucht

How Can I Store a Slice of Strings as JSONB in Postgres Using GORM and pgtype.JSONB?

Verwenden von pgtype.JSONB zum Speichern eines Abschnitts von Zeichenfolgen als JSONB mit GORM und Postgres

GORM-Benutzer können auf Herausforderungen stoßen, wenn sie versuchen, einen Abschnitt von Zeichenfolgen als JSONB zu speichern Objekt in Postgres, ohne auf den GORM-spezifischen Typ (postgres.Jsonb) angewiesen zu sein. Dieser Artikel befasst sich mit einer Lösung, die pgtype.JSONB verwendet, um diese Schwierigkeiten zu überwinden.

Bei der Verwendung von GORM mit pgx können Sie das pgtype-Paket nutzen, um JSONB-Datentypen darzustellen. Dieses Paket bietet den Typ pgtype.JSONB, der eine praktische Lösung für die Verwaltung von JSONB-Feldern in Ihren Go-Strukturen bietet.

Um diese Methode zu implementieren, definieren Sie einfach Ihre Struktur wie folgt:

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

In diesem Beispiel ist das Datenfeld als pgtype.JSONB definiert.

Zugriff auf JSONB-Werte

Um den Wert des Datenfelds aus der Datenbank abzurufen, können Sie verwenden die AssignTo-Methode:

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

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

JSONB-Werte festlegen

Um das Datenfeld in der Datenbank zu aktualisieren, verwenden Sie die Set-Methode:

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

db.Updates(&u)
Nach dem Login kopieren

Dieser Ansatz nutzt die Fähigkeiten des zugrunde liegenden Treibers, macht benutzerdefinierten Code überflüssig und ermöglicht die nahtlose Verarbeitung jedes JSONB-Typs, nicht nur von []Strings.

Das obige ist der detaillierte Inhalt vonWie kann ich mit GORM und pgtype.JSONB ein Stück Strings als JSONB in ​​Postgres speichern?. 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