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