在 Golang 中使用 Postgres 時,通常需要操作 JSONB 資料類型。 Gorm 是 Go 的 ORM(物件關聯映射)庫,提供了一個方便的 API 來與資料庫互動。但是,其處理 JSONB 的預設方法需要使用專用的 postgres.Jsonb 類型。
為了避免直接在模型中使用此類型,請考慮改用 pgtype.JSONB。這種類型由 pgtype 套件提供,它是 Gorm 底層驅動程式 pgx 的配套庫。 pgtype 提供了一種更靈活、更有效率的方式來處理 JSONB 資料。
在Go 結構體中,定義一個用於儲存JSONB 資料的字段,如下所示:
type User struct { gorm.Model Data pgtype.JSONB `gorm:"type:jsonb;default:'[]';not null"` }
從資料庫:
u := User{} db.Find(&u) var data []string err := u.Data.AssignTo(&data) if err != nil { // Handle error }
設定JSONB資料以進行更新:
u := User{} err := u.Data.Set([]string{"abc", "def"}) if err != nil { // Handle error } db.Updates(&u)
使用 pgtype.JSONB 提供了在 Gorm 中操作 JSONB 資料的更好替代方法。透過直接使用類型,您可以避免使用 postgres.Jsonb 的限制和潛在的複雜性。
以上是如何在 Gorm 中不使用 postgres.Jsonb 高效處理 JSONB 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!