Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengimbas Struktur Bersarang Dengan Berkesan Menggunakan SQLX?

Bagaimana untuk Mengimbas Struktur Bersarang Dengan Berkesan Menggunakan SQLX?

Patricia Arquette
Lepaskan: 2024-11-22 09:07:14
asal
399 orang telah melayarinya

How to Effectively Scan Nested Structs Using SQLX?

Struktur Dalam Struktur: Panduan untuk Pengimbasan Lanjutan SQLX

Semasa menggunakan SQLX, anda mungkin menghadapi cabaran mengimbas data ke dalam struktur bersarang. Mari kita pertimbangkan contoh ini:

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"`
}
Salin selepas log masuk

Apabila cuba mengimbas data menggunakan definisi ini, anda akan menghadapi ralat ini:

missing destination name street in *models.Customer
Salin selepas log masuk

Penyelesaian: Hayati Struktur Terbenam

Kunci untuk menyelesaikan isu ini terletak pada memahami keupayaan pengimbasan mendalam SQLX. Seperti yang dicadangkan oleh dokumentasi, ia menyokong struktur pembenaman, mempromosikan medan mereka ke dalam struktur induk. Untuk mencapai matlamat ini, hanya benamkan Alamat ke dalam Pelanggan:

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

Perhatikan bahawa kami mengalih keluar teg db medan Alamat sendiri, kerana ia bukan lagi entiti yang berasingan.

Awas: Ratakan Output JSON

Walau bagaimanapun, membenamkan Alamat meratakan output JSON bagi struktur Pelanggan, kerana kedua-dua Nama dan Bandar kini adalah hartanah langsung:

{
    "id": 1,
    "name": "foo",
    "street": "bar",
    "city": "baz"
}
Salin selepas log masuk

Alternatif Kemungkinan

Jika ini tidak diingini, terdapat beberapa pendekatan alternatif:

  1. Pemetaan semula: Imbas data ke dalam peta[rentetan]antara muka{} dan petakannya semula menggunakan tersuai logik.
  2. Mentakrifkan Jenis Antara Muka: Cipta antara muka yang mewakili struktur data yang diingini dan laksanakannya dengan kedua-dua struktur Alamat dan Pelanggan.

Atas ialah kandungan terperinci Bagaimana untuk Mengimbas Struktur Bersarang Dengan Berkesan Menggunakan SQLX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan