在没有 postgres.Jsonb 的 GORM 中使用 JSONB
在 PostgreSQL 中使用 GORM 时,您可能会遇到想要存储数组的情况作为 JSONB 对象的字符串。虽然 GORM 为此目的提供了 postgres.Jsonb 类型,但您可能更愿意避免使用它。在本文中,我们将探索使用 GORM 操作 JSONB 的替代方法,而不依赖于 postgres.Jsonb 类型。
使用 pgtype.JSONB
推荐的方法包括利用 pgtype.JSONB,这是 GORM 使用的 pgx 驱动程序提供的类型。 pgtype.JSONB 提供了一种与 JSONB 列交互的简单有效的方法。下面是一个示例:
type User struct { gorm.Model Data pgtype.JSONB `gorm:"type:jsonb;default:'[]';not null"` }
检索 JSONB 数据
要从数据库检索 JSONB 值,请将其分配给变量:
u := User{} db.find(&u) var data []string err := u.Data.AssignTo(&data) if err != nil { // Handle error }
存储 JSONB 数据
要在数据库中存储 JSONB 值,请使用 Set 方法:
u := User{} err := u.Data.Set([]string{"abc", "def"}) if err != nil { // Handle error } db.Updates(&u)
通过使用 pgtype.JSONB,您可以获得灵活性和除了简单的字符串数组之外,还与各种 JSONB 类型兼容。这种方法与 GORM 底层驱动程序的功能相一致,确保最佳性能和可靠的数据库交互。
以上是如何在没有 postgres.Jsonb 的情况下在 GORM 中使用 JSONB 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!