"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je analyser efficacement les structures imbriquées avec sqlx ?

Comment puis-je analyser efficacement les structures imbriquées avec sqlx ?

Publié le 2024-11-22
Parcourir:677

How Can I Efficiently Scan Nested Structs with sqlx?

Analyse des structures imbriquées avec sqlx

Les structures imbriquées présentent des défis lors de l'utilisation de sqlx. Cependant, la documentation fournit une solution grâce à l'utilisation de structures intégrées.

Structs intégrés

Sqlx prend en charge les structures intégrées, vous permettant d'attribuer des valeurs aux champs à l'aide des règles de priorité de Go. pour les attributs et les méthodes intégrés.

Exemple de code

Considérez le code suivant, où L'adresse n'est pas une structure intégrée :

type Customer struct {
       Id      int     `json:"id" db:"id"`
       Name    string  `json:"name" db:"name"`
       Address Address `json:"adress"`
}

type Address struct {
       Street string `json:"street" db:"street"`
       City   string `json:"city" db:"city"`
}

Ce code entraînera une erreur lors de la tentative d'analyse dans une structure client, car le champ Adresse n'est pas intégré et n'a pas sa propre balise db.

Pour résoudre ce problème, intégrez l'adresse dans Client :

type Customer struct {
   Id     int    `json:"id" db:"id"`
   Name   string `json:"name" db:"name"`
   Address
}

En intégrant l'adresse, ses champs (y compris les balises) sont promus dans Client, permettant à sqlx de les remplir à partir du résultat de la requête.

Sortie JSON

L'intégration de l'adresse aplatira la sortie JSON, comme indiqué ci-dessous :

{
    "id": 1,
    "name": "foo",
    "street": "bar",
    "city": "baz"
}

Pour résoudre ce problème, vous pouvez remapper la structure de base de données sur votre type d'origine ou analyser le résultat de la requête dans une carte.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3