"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso verificar com eficiência estruturas aninhadas com sqlx?

Como posso verificar com eficiência estruturas aninhadas com sqlx?

Publicado em 2024-11-22
Navegar:426

How Can I Efficiently Scan Nested Structs with sqlx?

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.

Tutorial mais recente Mais>

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