Heim  >  Artikel  >  Backend-Entwicklung  >  Wie scanne ich verschachtelte Strukturen effektiv mit SQLX?

Wie scanne ich verschachtelte Strukturen effektiv mit SQLX?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-22 09:07:14353Durchsuche

How to Effectively Scan Nested Structs Using SQLX?

Strukturen in Strukturen: Eine Anleitung zum erweiterten Scannen von SQLX

Bei der Verwendung von SQLX können beim Scannen von Daten in verschachtelte Strukturen Probleme auftreten. Betrachten wir dieses Beispiel:

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"`
}

Beim Versuch, Daten mit dieser Definition zu scannen, wird dieser Fehler auftreten:

missing destination name street in *models.Customer

Lösung: Embrace Embedded Structs

Der Schlüssel zur Lösung dieses Problems liegt im Verständnis der umfassenden Scanfunktionen von SQLX. Wie aus der Dokumentation hervorgeht, unterstützt es das Einbetten von Strukturen und die Heraufstufung ihrer Felder in die übergeordnete Struktur. Um dies zu erreichen, betten Sie einfach „Adresse“ in „Kunde“ ein:

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

Beachten Sie, dass wir das eigene Datenbank-Tag des Adressfelds entfernt haben, da es keine separate Einheit mehr ist.

Achtung: Reduzieren die JSON-Ausgabe

Durch das Einbetten von Adresse wird jedoch die JSON-Ausgabe der Kundenstruktur reduziert, da sowohl Name als auch Stadt sind nun direkte Grundstücke:

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

Mögliche Alternativen

Falls dies nicht gewünscht ist, gibt es mehrere alternative Ansätze:

  1. Neuzuordnung: Scannen Sie Daten in ein Map[string]interface{} und ordnen Sie sie mithilfe einer benutzerdefinierten Funktion neu zu Logik.
  2. Schnittstellentypen definieren: Erstellen Sie eine Schnittstelle, die die gewünschte Datenstruktur darstellt, und implementieren Sie sie sowohl mit der Adress- als auch mit der Kundenstruktur.

Das obige ist der detaillierte Inhalt vonWie scanne ich verschachtelte Strukturen effektiv mit SQLX?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn