GORM 使用者在嘗試將一段字串儲存為JSONB 時可能會遇到挑戰Postgres 中的對象,而不依賴GORM 特定類型(postgres.Jsonb)。本文深入探討了利用 pgtype.JSONB 來克服這些困難的解決方案。
將 GORM 與 pgx 結合使用時,您可以利用 pgtype 套件來表示 JSONB 資料類型。該套件提供了 pgtype.JSONB 類型,它為管理 Go 結構中的 JSONB 字段提供了一種便捷的解決方案。
要實作此方法,只需如下定義結構:
// User represents a GORM model type User struct { gorm.Model Data pgtype.JSONB `gorm:"type:jsonb;default:'[]';not null"` }
在此範例中,Data 欄位定義為 pgtype.JSONB。
存取JSONB值
要從資料庫擷取資料欄位的值,可以使用AssignTo 方法:
u := User{} db.Find(&u) var data []string err := u.Data.AssignTo(&data) if err != nil { log.Fatal(err) }
設定JSONB 值
要更新資料庫中的資料字段,請使用Set方法:
u := User{} err := u.Data.Set([]string{"abc", "def"}) if err != nil { return } db.Updates(&u)
此方法利用底層驅動程式的功能,無需自訂程式碼並支援無縫處理任何JSONB 類型,而不僅僅是[]string。
以上是如何使用 GORM 和 pgtype.JSONB 在 Postgres 中將一段字串儲存為 JSONB?的詳細內容。更多資訊請關注PHP中文網其他相關文章!