Objekte, die nicht mit Objectify und GAE gespeichert werden

8

Ich versuche, ein Objekt zu speichern und zu überprüfen, dass es direkt danach gespeichert wird, und es scheint nicht zu funktionieren.

Hier ist mein Objekt

%Vor%

Hier ist der Code zum Speichern und dann gleich danach zu laden.

%Vor%

Aber das Objekt "newOne" ist null. Obwohl ich es gerade fertig gemacht habe. Was mache ich falsch?

- Aktualisierung-- Wenn ich später versuche (wie Minuten später) sehe ich manchmal das Objekt, aber nicht direkt nach dem Speichern. Hat dies mit dem hohen Replikationsspeicher zu tun?

    
b-ryce 01.02.2013, 17:42
quelle

1 Antwort

7

Hatte das gleiche Verhalten vor einiger Zeit und stellte eine Frage zu Google Groups - objectify

Hier die Antwort, die ich bekommen habe:

%Vor%

Ich habe auch eine weitere gute Antwort, um mich mit dem Verhalten zu beschäftigen

  

Suchen Sie bei Löschvorgängen nach Schlüsseln und laden Sie dann die Entitäten im Stapel. Stelle sicher   Ihr bekommt eine starke Konsistenz (obwohl ich glaube, das ist die   Standard). Das Batch-Get sollte für die gelöschten Entitäten null zurückgeben.   Beim Hinzufügen wird es ein wenig komplizierter. Index-Updates können einige wenige dauern   Sekunden. AFAIK, gibt es drei Wege aus diesem: 1; Verwenden Sie vorberechnet   Ergebnisse (die Abfrage vollständig vermeiden). Wenn Ihre nächste Ansicht die des Benutzers ist   Vor kurzem erstellte Entitäten, führen Sie eine Liste dieser Schlüssel im Benutzer   Entität, und aktualisieren Sie diese Liste, wenn eine neue Entität erstellt wird. Diese Liste   wird immer frisch sein, keine Abfrage erforderlich. Abgesehen davon, dass es abgestanden ist   Indizes, dies beschleunigt auch Ihre App. Je mehr Sie das Ergebnis festlegen   kann zuverlässig verwalten, desto mehr Abfragen können Sie vermeiden.

     

2; Blenden Sie die Latenz aus, indem Sie die Abfrageergebnisse mit dem Kürzeren "verbessern"   Entitäten hinzugefügt. Abhängig von der Rate, mit der Sie Entitäten hinzufügen,   entweder injizieren Sie nur den letzten Schlüssel, oder kombinieren Sie dies mit dem   Lösung in 1 .

>      

3; Blenden Sie die Latenz aus, indem Sie den Benutzer durch einige nicht betroffene Ansichten führen   bevor Sie auf Ihrer abfragebasierten Ansicht landen. Diese Strategie hat definitiv   ein Geruch drüber. Sie müssen sicherstellen, dass diese zusätzlichen Schritte relevant sind   an den Benutzer, oder Sie werden eine schlechte Erfahrung geben.

     

Schmetterlinge, Joakim

Sie können alles hier lesen:

Wie kommt es, wenn ich keine asynchrone API verwende? nachdem ich ein Objekt gelöscht habe, bekomme ich es immer noch in einer Abfrage, die direkt nach dem Löschen ausgeführt wird oder nicht, nachdem ich eins hinzugefügt habe

Eine weitere gute Antwort auf eine ähnliche Frage : Objectify speichert nicht synchron, auch nicht jetzt a>

    
Daniel 01.02.2013, 19:06
quelle