ホームページ  >  記事  >  バックエンド開発  >  GORM と pgtype.JSONB を使用して文字列のスライスを JSONB として Postgres に保存するにはどうすればよいですか?

GORM と pgtype.JSONB を使用して文字列のスライスを JSONB として Postgres に保存するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-20 16:47:39883ブラウズ

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

pgtype.JSONB を使用して、GORM および Postgres で文字列のスライスを JSONB として保存する

GORM ユーザーは、文字列のスライスを JSONB として保存しようとすると問題が発生する可能性がありますGORM 固有の型 (postgres.Jsonb) に依存せずに Postgres のオブジェクトを作成します。この記事では、これらの問題を克服するために pgtype.JSONB を利用するソリューションについて詳しく掘り下げます。

pgx で GORM を利用する場合、pgtype パッケージを利用して JSONB データ型を表すことができます。このパッケージは、Go 構造体の JSONB フィールドを管理するための便利なソリューションを提供する pgtype.JSONB タイプを提供します。

このメソッドを実装するには、次のように構造体を定義するだけです。

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

この例では、データ フィールドは pgtype.JSONB として定義されています。

JSONB 値へのアクセス

データベースからデータ フィールドの値を取得するには、次を使用できます。 AssignTo メソッド:

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

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

JSONB 値の設定

データベースの Data フィールドを更新するには、Set メソッドを使用します:

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

db.Updates(&u)

このアプローチは、基礎となるドライバーの機能を活用し、カスタム コードの必要性を排除し、[]string だけでなくあらゆる JSONB 型のシームレスな処理を可能にします。

以上がGORM と pgtype.JSONB を使用して文字列のスライスを JSONB として Postgres に保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。