Wie behebe ich einen Indexfehler bei der Abfrage von GAE-Datenspeichern?

8

Wenn ich versuche, eine Abfrage nach Datum sortiert nach dem Datenspeicher auszuführen, erhalte ich den folgenden Fehler:

%Vor%

Die Abfrage wird ohne Fehler ausgeführt, wenn ich nicht versuche, nach Datum zu sortieren. Die Appengine-Konsole unter Datenspeicherindizes sagt:

%Vor%

Was mache ich falsch? Wie kann ich meine Abfrage nach Datum sortiert ausführen? Danke!

Hier ist meine Entity-Definition:

%Vor%

und dies ist die Abfrage, die fehlschlägt:

%Vor%

Mein index.yaml enthält:

%Vor%     
deltanine 22.04.2013, 01:05
quelle

2 Antworten

4

Sie müssen auch die "Richtung" angeben, da die "Bestellung" durchgeführt wird, wenn der Index geschrieben wird, um die Dinge im Stil von Google zu beschleunigen.

Also sollte Ihre index.yaml wie folgt aussehen:

%Vor%

Hier ist Googles offizielle Beschreibung der Bestellung:

  

Die Sortierrichtung, entweder asc für aufsteigend oder desc für   absteigend. Dies ist nur für Eigenschaften erforderlich, die in Sortierreihenfolgen verwendet werden   der Abfrage und muss mit der von der Abfrage verwendeten Richtung übereinstimmen. Das   Standard ist Asc.

Ich hoffe, das hilft.

    
Lawrence Mok 22.04.2013, 01:27
quelle
3

Danke, Lawrence, du hast mich auf den richtigen Weg gebracht - ich glaube, ich habe die Antwort gefunden. Die Abfrage muss GENAU mit der Indexdefinition übereinstimmen.

Ich entdeckte dies, indem ich verschiedene GQL-Abfragen im Datenspeicher-Admin-Feld ausprobierte.

Zum Beispiel die folgenden 2 Abfragen:

%Vor%

beide scheitern mit:

%Vor%

Allerdings

%Vor%

ist erfolgreich. Ebenso werden Abfragen, die weniger Parameter als der Index enthalten, ebenfalls fehlschlagen, zB:

%Vor%

schlägt fehl mit:

%Vor%

Also das Problem war in meiner Abfrage die Zeile:

%Vor%

sortiert tatsächlich in aufsteigender Reihenfolge, aber mein Index sagt die Reihenfolge DESCENDING. Die Lösung ist:

%Vor%     
deltanine 22.04.2013 03:53
quelle