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中文网其他相关文章!