首页  >  文章  >  后端开发  >  如何使用 GORM 和 pgtype.JSONB 在 Postgres 中将一段字符串存储为 JSONB?

如何使用 GORM 和 pgtype.JSONB 在 Postgres 中将一段字符串存储为 JSONB?

Susan Sarandon
Susan Sarandon原创
2024-11-20 16:47:39880浏览

How Can I Store a Slice of Strings as JSONB in Postgres Using GORM and pgtype.JSONB?

使用 pgtype.JSONB 通过 GORM 和 Postgres 将一段字符串保存为 JSONB

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn