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 サイトの他の関連記事を参照してください。