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.
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