Kiedy próbuję uruchomić kwerendę na datastore uporządkowanej według daty pojawia się następujący błąd:Jak naprawić błąd indeksu podczas wysyłania zapytań do magazynu danych GAE?
NeedIndexError: no matching index found.
The suggested index for this query is:
- kind: Message
properties:
- name: author
- name: ref
- name: date
Kwerenda działa bez błędu, jeśli nie spróbować na zamówienie według daty. Konsola appengine pod indeksami datastore mówi:
author ▲ , ref ▲ , date ▼
Serving
Co robię źle? Jak mogę uruchomić zapytanie uporządkowane według daty? Dzięki!
Oto moja definicja podmiotu:
from google.appengine.ext import ndb
class Message(ndb.Model):
subject = ndb.StringProperty()
body = ndb.TextProperty()
date = ndb.DateTimeProperty(auto_now_add=True)
ref = ndb.StringProperty(required=True)
author = ndb.KeyProperty(required=True)
i to jest kwerenda, która kończy się niepowodzeniem:
def readMessages(ref, user = None):
query = Message.query()
query = query.filter(Message.ref == ref)
if user:
query = query.filter(Message.author == user.key)
query = query.order(Message.date)
# convert to a list so we can index like an array
return [ message for message in query ]
Moja index.yaml zawiera:
indexes:
- kind: Message
properties:
- name: author
- name: ref
- name: date
direction: desc
Dzięki. Właściwie, zapomniałem skopiować ostatniego wiersza definicji indeksu.Konsola mechanizmu aplikacji wskazuje, że indeks został utworzony jako ref ▲, autor ▲, data ▼. Więc nie sądzę, że to jest mój problem, ale zaktualizowałem definicję indeksu w pytaniu. – deltanine