Heim > Backend-Entwicklung > Golang > Wie gehe ich mit dynamischen Eigenschaften im Google App Engine-Datenspeicher mit Go um?

Wie gehe ich mit dynamischen Eigenschaften im Google App Engine-Datenspeicher mit Go um?

Barbara Streisand
Freigeben: 2024-11-20 02:33:01
Original
808 Leute haben es durchsucht

How to Handle Dynamic Properties in Google App Engine Datastore using Go?

So implementieren Sie dynamische Eigenschaften in Go im Google App Engine Datastore

Der Google App Engine Datastore bietet eine leistungsstarke Datenspeicherlösung für Webanwendungen und bietet Flexibilität und Skalierbarkeit. Manchmal besteht die Notwendigkeit, Daten mit dynamischen Eigenschaften zu speichern, also Eigenschaften, die nicht im Voraus deklariert werden. Dies kann in Go durch die Nutzung der PropertyLoadSaver-Schnittstelle von Google App Engine erreicht werden.

PropertyLoadSaver-Schnittstelle

Mit der PropertyLoadSaver-Schnittstelle können Sie definieren, wie die Eigenschaften einer Entität geladen und im Datenspeicher gespeichert werden sollen. Durch die Implementierung dieser Schnittstelle erhalten Sie Kontrolle über die dynamische Eigenschaftenverwaltung.

PropertyList-Typ

Die Go App Engine-Plattform stellt einen PropertyList-Typ bereit, der die PropertyLoadSaver-Schnittstelle implementiert. PropertyList ist im Wesentlichen ein Teil von Eigenschaften, mit dem Sie Eigenschaften dynamisch hinzufügen und entfernen können.

Beispiel für die Verwendung von PropertyList

Um mithilfe von PropertyList eine Entität mit dynamischen Eigenschaften zu erstellen, führen Sie die folgenden Schritte aus:

import "google.golang.org/appengine/datastore"

// Create a PropertyList to hold the dynamic properties.
props := datastore.PropertyList{
    datastore.Property{Name: "time", Value: time.Now()},
    datastore.Property{Name: "email", Value: "[email protected]"},
}

// Create an incomplete key for the new entity.
k := datastore.NewIncompleteKey(ctx, "DynEntity", nil)

// Save the entity using the PropertyList.
key, err := datastore.Put(ctx, k, &props)
Nach dem Login kopieren

Dieses Code-Snippet erstellt eine Entität mit der Art „DynEntity“ und zwei dynamischen Eigenschaften: „time“ und „email“. Die PropertyList wird als Wert für die Entität gespeichert.

Implementieren Ihres eigenen PropertyLoadSaver (optional)

Bei Bedarf können Sie auch Ihren eigenen PropertyLoadSaver implementieren. Hier ist ein Beispiel mit einem benutzerdefinierten Typ namens „DynEnt“:

import "google.golang.org/appengine/datastore"

type DynEnt map[string]interface{}

func (d *DynEnt) Load(props []datastore.Property) error {
    for _, p := range props {
        (*d)[p.Name] = p.Value
    }
    return nil
}

func (d *DynEnt) Save(props []datastore.Property, err error) error {
    for k, v := range *d {
        props = append(props, datastore.Property{Name: k, Value: v})
    }
    return err
}
Nach dem Login kopieren

Dieser DynEnt-Typ kann dann zum Speichern von Entitäten mit dynamischen Eigenschaften verwendet werden, wie unten gezeigt:

import "google.golang.org/appengine/datastore"

// Create a DynEnt with dynamic properties.
d := DynEnt{"email": "[email protected]", "time": time.Now()}

// Create an incomplete key for the new entity.
k := datastore.NewIncompleteKey(ctx, "DynEntity", nil)

// Save the entity using the DynEnt.
key, err := datastore.Put(ctx, k, &d)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie gehe ich mit dynamischen Eigenschaften im Google App Engine-Datenspeicher mit Go um?. 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