Heim > Backend-Entwicklung > Golang > Wie füge ich eingebettete Strukturfelder in die JSON-Antwort mit MongoDB in Golang ein?

Wie füge ich eingebettete Strukturfelder in die JSON-Antwort mit MongoDB in Golang ein?

Patricia Arquette
Freigeben: 2024-11-09 11:01:02
Original
731 Leute haben es durchsucht

How to Include Embedded Struct Fields in JSON Response with MongoDB in Golang?

Einbetten von Strukturen in Golang mit MongoDB

In Golang ist das Einbetten von Strukturen eine Technik, um die Funktionalität einer Struktur zu erweitern, indem sie in einer anderen verschachtelt wird Struktur. Bei der Arbeit mit eingebetteten Strukturen und MongoDB können jedoch bestimmte Herausforderungen auftreten.

Das Problem: Verschachtelte Felder aus der JSON-Antwort ausschließen

Bedenken Sie die folgende Benutzerstruktur :

type User struct {
  Id      bson.ObjectId `json:"id,omitempty" bson:"_id,omitempty"`
  Name    string        `json:"name,omitempty" bson:"name,omitempty"`
  Secret  string        `json:"-,omitempty" bson:"secret,omitempty"`
}
Nach dem Login kopieren

Das Secret-Feld wird von der JSON-Darstellung mit json:"-" ausgeschlossen. Dies ist in den meisten Fällen nützlich, in denen die geheimen Informationen nicht preisgegeben werden sollen.

Das Dilemma: Admin-Routen und eingebettete Strukturen

Um Administratoren Zugriff auf das geheime Feld zu gewähren wird eine adminUser-Struktur erstellt, die die User-Struktur als eingebettetes Feld enthält:

type adminUser struct {
  User
  Secret  string        `json:"secret,omitempty" bson:"secret,omitempty"`
}
Nach dem Login kopieren

Dieser Ansatz gibt jedoch nur das Secret-Feld zurück, da die eingebetteten User-Felder ignoriert werden.

Die Lösung: bson Inline Flag

Um dieses Problem zu beheben, stellt das bson-Paket ein Inline-Flag bereit, das die Einbeziehung eingebetteter Felder in die JSON-Serialisierung und MongoDB-Dokumentdekodierung ermöglicht.

type adminUser struct {
    User    `bson:",inline"`
    Secret  string `json:"secret,omitempty" bson:"secret,omitempty"`
}
Nach dem Login kopieren

Mit dieser Änderung werden sowohl die Benutzerfelder (außer Secret) als auch das Secret-Feld in adminUser in die JSON-Antwort und das MongoDB-Dokument aufgenommen.

Alternativer Ansatz

Alternativ könnte man erwägen, das Secret-Feld aus der User-Struktur zu entfernen und es nur in die adminUser-Struktur aufzunehmen. Dies vereinfacht das Datenmodell und stellt sicher, dass Geheimnisse nur von autorisierten Administratoren in die Datenbank geschrieben und aus ihr gelesen werden.

Das obige ist der detaillierte Inhalt vonWie füge ich eingebettete Strukturfelder in die JSON-Antwort mit MongoDB in Golang ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage