Maison > développement back-end > Golang > Comment analyser efficacement les structures imbriquées à l'aide de SQLX ?

Comment analyser efficacement les structures imbriquées à l'aide de SQLX ?

Patricia Arquette
Libérer: 2024-11-22 09:07:14
original
396 Les gens l'ont consulté

How to Effectively Scan Nested Structs Using SQLX?

Structs dans les structures : guide de l'analyse avancée de SQLX

Lors de l'utilisation de SQLX, vous pourriez rencontrer des difficultés à analyser les données dans des structures imbriquées. Considérons cet exemple :

type Customer struct {
   Id     int    `json:"id" db:"id"`
   Name   string `json:"name" db:"name"`
   Address Address `json:"adress"` // Oops, missing embedded property
}
type Address struct {
   Street string `json:"street" db:"street"`
   City   string `json:"city" db:"city"`
}
Copier après la connexion

Lorsque vous tentez d'analyser des données à l'aide de cette définition, vous rencontrerez cette erreur :

missing destination name street in *models.Customer
Copier après la connexion

Solution : adopter les structures intégrées

La clé pour résoudre ce problème réside dans la compréhension des capacités d'analyse approfondie de SQLX. Comme le suggère la documentation, il prend en charge l'intégration de structures, en promouvant leurs champs dans la structure parent. Pour y parvenir, intégrez simplement Adresse dans Client :

type Customer struct {
   Id     int    `json:"id" db:"id"`
   Name   string `json:"name" db:"name"`
   Address Address
}
Copier après la connexion

Notez que nous avons supprimé la propre balise db du champ Adresse, car il ne s'agit plus d'une entité distincte.

Attention : Aplatir la sortie JSON

Cependant, l'intégration de l'adresse aplatit la sortie JSON de la structure Customer, car le nom et la ville sont désormais des propriétés directes :

{
    "id": 1,
    "name": "foo",
    "street": "bar",
    "city": "baz"
}
Copier après la connexion

Alternatives possibles

Si cela n'est pas souhaité, il existe plusieurs approches alternatives :

  1. Remapping : Scannez les données dans une interface map[string]{} et remapper à l'aide de logique.
  2. Définition des types d'interface : Créez une interface représentant la structure de données souhaitée et implémentez-la avec les structures Adresse et Client.

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