Verificação em estruturas aninhadas com sqlx
Estruturas aninhadas apresentam desafios ao usar sqlx. No entanto, a documentação fornece uma solução através do uso de estruturas incorporadas.
Estruturas incorporadas
Sqlx oferece suporte a estruturas incorporadas, permitindo atribuir valores a campos usando as regras de precedência do Go para atributos e métodos incorporados.
Exemplo de código
Considere o código a seguir, onde Endereço não é uma estrutura incorporada:
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"` }
Este código resultará em um erro ao tentar digitalizar em uma estrutura Customer porque o campo Endereço não está incorporado e não tem sua própria tag db.
Para resolver isso, incorpore Endereço em Cliente:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address }
Ao incorporar o Endereço, seus campos (incluindo tags) são promovidos para Cliente, permitindo que o sqlx os preencha a partir do resultado da consulta.
Saída JSON
Endereço de incorporação nivelará a saída JSON, conforme mostrado abaixo:
{ "id": 1, "name": "foo", "street": "bar", "city": "baz" }
Para resolver isso, você pode remapear a estrutura do banco de dados para o seu tipo original ou digitalizar o resultado da consulta em um mapa.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3