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.
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.
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.
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)
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.
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 }
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)
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!