Heim >Backend-Entwicklung >Golang >Warum werden in CouchDB mit go-couchdb nur großgeschriebene Strukturfelder aktualisiert?

Warum werden in CouchDB mit go-couchdb nur großgeschriebene Strukturfelder aktualisiert?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-05 05:01:45993Durchsuche

Why Are Only Capitalized Struct Fields Updated in CouchDB Using go-couchdb?

Großschreibung wirkt sich auf die Datenspeicherung in CouchDB-Strukturen aus

Bei Verwendung der Bibliothek „github.com/mikebell-org/go-couchdb“ für den Zugriff Bei CouchDB tritt ein besonderes Problem auf: Nur Strukturfelder mit großgeschriebenen Anfangsbuchstaben werden in der Datenbank aktualisiert Einfügungen.

Beispiel:

type Person struct {
    name string
    Age  int
}

Beim Einfügen einer Personeninstanz in die Datenbank:

joe := Person{
    name: "mike",
    Age:  190,
}

Nur ​​das Feld „Alter“ wird hinzugefügt die Datenbank. Andere kleingeschriebene Felder, wie z. B. der Name, werden weggelassen.

Der Grund für das Verhalten:

Dieses Verhalten ergibt sich aus der Go-Sprachspezifikation, die vorschreibt, dass Felder mit Kleinbuchstaben beginnen Briefe werden nicht exportiert. Daher enthält das JSON-Serialisierungspaket (z. B. json) diese Felder nur, wenn dies ausdrücklich angewiesen wird.

Lösung des Problems:

Um Felder in Kleinbuchstaben zu integrieren in die Datenbank, verwenden Sie JSON-Tags:

type Person struct {
    name string `json:"name"`
    Age  int    `json:"Age"`
}

Durch die Angabe des JSON-Tags wird das Feld für den Namen in Kleinbuchstaben explizit verfügbar gemacht JSON-Serialisierung, sodass es in der Datenbank gespeichert werden kann. Weitere Informationen zu JSON-Tags finden Sie in der Dokumentation.

Das obige ist der detaillierte Inhalt vonWarum werden in CouchDB mit go-couchdb nur großgeschriebene Strukturfelder aktualisiert?. 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