Es kann nur eine Instanz geben, nur eine Entität, die von demselben Datenspeicherschlüssel gebunden/bezeichnet wird.
Und Entitäten (gebunden an einen Schlüssel) können nur überschrieben, nicht aktualisiert/erweitert/angehängt werden.
Wenn Sie also bereits eine Entität gespeichert haben, müssen Sie diese aktualisieren, bevor Sie sie laden, dann die Entität im Speicher ändern und die geänderte Entität aufschreiben (speichern). Diese Speicherung überschreibt die vorhandene Entität im Datenspeicher.
Wenn für eine Eigenschaft mehrere Werte gespeichert werden sollen, muss der Typ dieser Eigenschaft das Speichern mehrerer Werte unterstützen. Slices in Go sind solche Arten.
So in Ihrem Beispiel sollte Ihr Unternehmen wie folgt aussehen:
type Entity struct {
Values []string
}
Wenn Sie eine vorhandene Entity
laden, müssen Sie den neuen Wert zu seiner Values
Feld anhängen, so etwas wie dieses (in Pseudo-Code):
e := ... // load existing entity
e.Values = append(e.Values, input) // Append new data to Values
// And now save Entity (e) with the same key
In Code:
client, err := datastore.NewClient(ctx, projectID)
tx, err := client.NewTransaction(ctx)
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
fmt.Fprint(w, input)
taskKey := datastore.NameKey("Entity", "stringID", nil)
var task Entity
if err := tx.Get(taskKey, &task); err != nil {
log.Fatalf("tx.Get: %v", err)
}
task.Values = append(task.Values, input)
if _, err := tx.Put(taskKey, &task); err != nil {
log.Fatalf("tx.Put: %v", err)
}
if _, err := tx.Commit(); err != nil {
log.Fatalf("tx.Commit: %v", err)
}
Wenn Sie über diese Values
-Eigenschaft indexieren müssen, können Probleme auftreten, wenn sie viele Werte enthält. Siehe dieses Duplikat für weitere Details: App Engine Datastore: How to set multiple values on a property using golang?
Wenn Sie auf dieses Problem stoßen, sollten Sie in Erwägung ziehen, Ihre Daten in einem anderen Format zu modellieren und zu speichern, z.Speichern in mehreren Entitäten, wobei eine Entität nur eine einzige input
speichert, die mit dem Schlüssel verbunden ist, zu dem sie gehört.
Was ist "Entity" und "Input"? Bitte poste sie und was du genau erreichen willst. – icza
Entity ist struct & Eingabe ist eine Zeichenfolge. _type Entity struct { \t Wert Zeichenfolge } Eingang: = r.URL.Query() Liefert ("Input") _ – vindl
Und was wollen Sie "anhängen".? Was willst du erreichen? – icza