ホームページ > バックエンド開発 > Golang > postgres.Jsonb を使用せずに Gorm で JSONB データを効率的に処理するにはどうすればよいですか?

postgres.Jsonb を使用せずに Gorm で JSONB データを効率的に処理するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-25 03:36:11
オリジナル
706 人が閲覧しました

How Can I Efficiently Handle JSONB Data in Gorm Without Using postgres.Jsonb?

postgres.Jsonb を使用しない Gorm および Postgres での JSONB の使用

Golang で Postgres を操作する場合、多くの場合、JSONB データ型を操作する必要があります。 Go の ORM (オブジェクト リレーショナル マッピング) ライブラリである Gorm は、データベースと対話するための便利な API を提供します。ただし、JSONB を処理するためのデフォルトのアプローチでは、専用の postgres.Jsonb 型を使用する必要があります。

この型をモデル内で直接使用することを避けるには、代わりに pgtype.JSONB を利用することを検討してください。このタイプは、Gorm の基礎となるドライバーである pgx のコンパニオン ライブラリである pgtype パッケージによって提供されます。 pgtype は、JSONB データを操作するためのより柔軟かつ効率的な方法を提供します。

実装

Go 構造体で、次のように 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 データを設定するには:

u := User{}

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

db.Updates(&u)
ログイン後にコピー

pgtype.JSONB を使用すると、Gorm で JSONB データを操作するより良い代替手段が提供されます。型を直接使用することで、postgres.Jsonb の操作に伴う制限や潜在的な複雑さを回避できます。

以上がpostgres.Jsonb を使用せずに Gorm で JSONB データを効率的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート