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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-22 09:07:14348parcourir

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"`
}

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

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
}

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"
}

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!

Déclaration:
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