Pour stocker une liste de chaînes en tant qu'objet JSONB dans Postgres à l'aide de GORM, une approche courante consiste à utiliser le type personnalisé de GORM , postgres.Jsonb. Cependant, pour éviter cette dépendance, voici une solution alternative :
Au lieu de vous fier au type spécifique de GORM, envisagez d'implémenter pgtype.JSONB à partir du package pgx, que GORM utilise comme son conducteur. Voici comment l'incorporer dans votre modèle :
import ( "github.com/jackc/pgx" "github.com/jackc/pgx/pgtype" ) type User struct { gorm.Model Data pgtype.JSONB `gorm:"type:jsonb;default:'[]';not null"` }
Récupérer la liste réelle des chaînes de la base de données :
u := User{} db.Find(&u) var data []string err := u.Data.AssignTo(&data) if err != nil { // Handle error }
Mise à jour la liste des chaînes dans la base de données :
u := User{} err := u.Data.Set([]string{"abc", "def"}) if err != nil { // Handle error } db.Updates(&u)
En tirant parti pgtype.JSONB, vous pouvez manipuler les données JSONB dans vos modèles Go sans utiliser le type postgres.Jsonb de GORM, offrant ainsi une approche plus directe et flexible du travail avec JSONB dans Postgres.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!