首页 >后端开发 >Golang >如何在没有 postgres.Jsonb 的情况下高效管理 GORM 中的 JSONB []string 数据?

如何在没有 postgres.Jsonb 的情况下高效管理 GORM 中的 JSONB []string 数据?

Barbara Streisand
Barbara Streisand原创
2024-11-26 08:55:10840浏览

How to Efficiently Manage JSONB []string Data in GORM without postgres.Jsonb?

使用 []string 在 Gorm 中操作 JSONB

要使用 GORM 将字符串列表作为 JSONB 对象存储在 Postgres 中,常见的方法是利用 GORM 的自定义类型, postgres.Jsonb。然而,为了避免这种依赖性,这里有一个替代解决方案:

使用 pgtype.JSONB

不要依赖 GORM 的特定类型,而是考虑从 pgx 包实现 pgtype.JSONB,GORM 将其用作它的司机。以下是将其合并到模型中的方法:

import (
    "github.com/jackc/pgx"
    "github.com/jackc/pgx/pgtype"
)

type User struct {
    gorm.Model
    Data pgtype.JSONB `gorm:"type:jsonb;default:'[]';not null"`
}

使用 pgtype.JSONB

从数据库中检索实际的字符串列表:

u := User{}
db.Find(&u)

var data []string
err := u.Data.AssignTo(&data)
if err != nil {
    // Handle error
}

更新数据库中的字符串列表:

u := User{}

err := u.Data.Set([]string{"abc", "def"})
if err != nil {
    // Handle error
}

db.Updates(&u)

通过利用pgtype.JSONB,您可以在 Go 模型中操作 JSONB 数据,而无需使用 GORM 的 postgres.Jsonb 类型,为在 Postgres 中使用 JSONB 提供更直接、更灵活的方法。

以上是如何在没有 postgres.Jsonb 的情况下高效管理 GORM 中的 JSONB []string 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

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