首页 > 后端开发 > Golang > 正文

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

Susan Sarandon
发布: 2024-11-20 16:47:39
原创
878 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板