Quando provo ad eseguire una query sul datastore ordinati per data ottengo il seguente errore:Come correggere l'errore di indice quando si esegue una query sul datastore GAE?
NeedIndexError: no matching index found.
The suggested index for this query is:
- kind: Message
properties:
- name: author
- name: ref
- name: date
la query viene eseguita senza errori se non cerco di ordinare per data. La console Appengine sotto gli indici del datastore dice:
author ▲ , ref ▲ , date ▼
Serving
Cosa sto facendo male? Come posso eseguire la mia richiesta ordinata per data? Grazie!
Qui è la mia definizione di entità:
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)
e questa è la query che non riesce:
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 ]
mio index.yaml contiene:
indexes:
- kind: Message
properties:
- name: author
- name: ref
- name: date
direction: desc
Grazie. In realtà, ho dimenticato di copiare l'ultima riga della mia definizione dell'indice.La console del motore dell'app indica che l'indice è stato creato come riferimento ▲, autore ▲, data ▼. Quindi non penso che questo sia il mio problema, ma ho aggiornato la definizione dell'indice nella domanda. – deltanine