2017-12-06 2 views
0

Ich habe ein einfaches Testobjekt Foo mit der String-Eigenschaft Bar. Wenn ich eine .GetAll ("Foo") -Abfrage mache, bekomme ich alle Objekte zurück, aber wenn ich .Order ("Bar") hinzufüge, wird nichts zurückgegeben. Ich habe versucht, mit und ohne index.yaml das Objekt und die Eigenschaft mit und ohne Sortierreihenfolge zu spezifizieren. Was vermisse ich? Ich verwende nicht "noindex" auf der Bar-Eigenschaft.Datastore-Abfrage gibt keine Daten zurück, wenn das Ergebnis bestellt wird

type Foo struct { 
    Bar string 
} 

.NewQuery("Foo").Order("Bar").GetAll(c, &foo) <-- nothing returned 

.NewQuery("Foo").GetAll(c, &foo) <-- objects returned 
+0

Mögliches Duplikat von [Google App Engine-Datenspeicher gibt keine Zeilen zurück, wenn ich eine Bestellklausel habe] (https://stackoverflow.com/questions/47446523/google-app-engine-datastore-returns-no-rows-ifi-i- have-a-order-Klausel/47455578 # 47455578). – icza

+0

Bitte fügen Sie Code für Ihre Foo-Struktur und für Einfügen (Put) und Abfrage. –

+0

@icza Ich mache es genau so. Es gibt keine "noindex" -Eigenschaften. Ich führe alles lokal aus, und selbst wenn ich mit einem leeren Datenspeicher anfange, füge ich einen oder mehrere Datensätze hinzu. Ich kann immer noch keine Datensätze erhalten, die mit .Order() angegeben wurden. –

Antwort

1

Entitäten werden zum Zeitpunkt des Einfügens indexiert.

  1. Stellen Sie sicher, dass Ihr Strukturfeld keine noindex Annotation für den Datenspeicher hat.
  2. Stellen Sie sicher, dass struct Feld in der Annotation (Kommentar nicht Eigenschaftsnamen ändern zB:.

    Bar String // datastore:bar

  3. sicher, dass Sie PropertyLoadSaver nicht außer Kraft setzen und machen nicht die Eigenschaft unindexable und nicht Namen ändern.

  4. Check in Datenspeicher-Viewer können Sie auf dem Grundstück bestellen, so ist es nicht Probleme mit dem Put() Code und wahrscheinlich Problem mit Ihrer Anfrage.
Verwandte Themen