Maison > développement back-end > Golang > Comment intégrer une structure dans une autre structure avec MongoDB dans Golang sans perdre de données ?

Comment intégrer une structure dans une autre structure avec MongoDB dans Golang sans perdre de données ?

Susan Sarandon
Libérer: 2024-11-08 18:28:02
original
492 Les gens l'ont consulté

How to Embed a Struct in Another Struct with MongoDB in Golang Without Losing Data?

Incorporer une structure dans une autre structure en Golang avec MongoDB

En Golang, intégrer une structure dans une autre structure vous permet d'hériter des champs du structure intégrée. Cependant, vous pouvez rencontrer des problèmes lorsque vous travaillez avec des structures intégrées et MongoDB, pouvant entraîner la perte de données de champ intégrées.

Comprendre le problème

Envisagez un scénario dans lequel vous devez fournir différentes réponses JSON pour une ressource utilisateur en fonction du rôle de l'utilisateur. Une réponse inclut un champ « Secret », qui ne doit être affiché que pour les administrateurs.

Dans votre code actuel, vous avez créé des structures distinctes pour User et adminUser, cette dernière contenant le champ « Secret ». Cependant, l'intégration de l'utilisateur dans adminUser à l'aide de l'héritage (tapez adminUser struct { User ; Secret string }) ne fonctionne pas comme prévu.

Solution

Pour résoudre ce problème, vous peut utiliser l'indicateur "inline" du package bson. En utilisant bson:",inline", vous pouvez intégrer les champs de la structure intégrée dans la structure parent.

type adminUser struct {
    User `bson:",inline"`
    Secret string `json:"secret,omitempty" bson:"secret,omitempty"`
}
Copier après la connexion

Cette approche vous permet d'accéder aux deux champs de la structure User dans la structure adminUser.

Considérations supplémentaires

Notez que l'utilisation de bson:",inline" peut entraîner des erreurs de clé en double lors de la lecture à partir de la base de données, car les deux structures contiennent le champ "Secret". Pour éviter cela, il est recommandé de supprimer le champ « Secret » de la structure User et de l'inclure uniquement dans la structure adminUser. Cela garantit que le champ « Secret » n'est accessible que via la structure adminUser, fournissant le niveau de contrôle souhaité.

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