Heim > Backend-Entwicklung > Golang > Wie behalte ich leere Werte in MongoDB-Updates mit Golangs „omitempty' bei?

Wie behalte ich leere Werte in MongoDB-Updates mit Golangs „omitempty' bei?

DDD
Freigeben: 2024-11-23 10:23:14
Original
677 Leute haben es durchsucht

How to Preserve Empty Values in MongoDB Updates Using Golang's `omitempty`?

Wie man mit leeren Werten in MongoDB-Updates mit „omitempty“ in Golang-Strukturen umgeht

Einführung

Golang-Strukturen mit „omitempty“-Feldern ermöglichen die Zuordnung selektiver JSON-Werte in die Struktur, wobei Felder mit leeren Feldern ausgeschlossen werden Werte. Dies kann jedoch zu Herausforderungen beim Aktualisieren von MongoDB-Dokumenten führen, da leere Werte möglicherweise nicht in der Datenbank widergespiegelt werden.

Problem

Bei Verwendung einer Struktur mit „omitempty“ Flag zum Zuordnen von JSON-Formularwerten, leere Felder werden ignoriert. Dies wirft Probleme beim Aktualisieren von Dokumenten in MongoDB auf:

  • Wenn ein zuvor aktiviertes Kontrollkästchen während der Aktualisierung deaktiviert wird, wird der leere Wert nicht in die Struktur abgebildet und kann nicht in der Datenbank gespeichert werden.
  • Umgekehrt kann bei REST-API-Updates die Bereitstellung nur notwendiger Werte andere Feldwerte in der Datenbank überschreiben, auch solche, die nicht vorhanden sein sollten geändert.

Anforderung

Die Beibehaltung des „omitempty“-Flags bei gleichzeitiger Beibehaltung der Möglichkeit, leere oder aktualisierte Werte in MongoDB zu speichern, ist für ein flexibles und robustes Update unerlässlich Prozess.

Lösung

Um dieses Problem zu beheben, Wandeln Sie die betroffenen Felder in der Struktur in Zeiger um:

type Coupon struct {
    Id               *int    `json:"id,omitempty" bson:"_id,omitempty"`
    Name             string `json:"name,omitempty" bson:"name,omitempty"`
    Code             string `json:"code,omitempty" bson:"code,omitempty"`
    Description      string `json:"description,omitempty" bson:"description,omitempty"`
    Status           *bool   `json:"status" bson:"status"`
    MaxUsageLimit    *int    `json:"max_usage_limit,omitempty" bson:"max_usage_limit,omitempty"`
    SingleUsePerUser *bool   `json:"single_use_per_user,omitempty" bson:"single_use_per_user,omitempty"`
}
Nach dem Login kopieren

Auf diese Weise:

  • Ein Nullzeiger stellt ein ausgelassenes Feld dar.
  • Ein Nicht-Null-Zeiger auf einen Nullwert stellt ein leeres Feld dar.
  • Ein Zeiger ungleich Null auf einen Wert ungleich Null setzt das Feld auf den angegebenen Wert Wert.

Durch die Verwendung von Zeigern ermöglichen wir die Flexibilität, sowohl leere als auch aktualisierte Werte in MongoDB-Updates zu verarbeiten und gleichzeitig das „Omitempty“-Verhalten beizubehalten.

Das obige ist der detaillierte Inhalt vonWie behalte ich leere Werte in MongoDB-Updates mit Golangs „omitempty' bei?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage