Maison > développement back-end > Golang > Comment gérer efficacement les données JSONB []string dans GORM sans postgres.Jsonb ?

Comment gérer efficacement les données JSONB []string dans GORM sans postgres.Jsonb ?

Barbara Streisand
Libérer: 2024-11-26 08:55:10
original
853 Les gens l'ont consulté

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

Manipulation de JSONB dans Gorm avec une []string

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 :

Utiliser pgtype.JSONB

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"`
}
Copier après la connexion

Travailler avec pgtype.JSONB

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
}
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal