Fehler zurückgegeben ist 500 Interner Serverfehler, wenn die ausgeführte Anwendung eine Abrufanforderung für ViewDogs verarbeitet. Bei GAE-Stack-Treiber Konsole erhalte ich:GAE NeedIndexError:
NeedIndexError: no matching index found - recommended index is:
- kind:Dog
ancestor: yes
properties: -
name: id
direction: desc".
Ich bestätige es einen Index geladen Hund namens und es zeigt die „Serving“
Auch bestätigen gibt es 4 Hunde erfolgreich erstellt, und sie können aus abgefragt werden die Registerkarte DataStore Entities einzeln und mit SELECT * FROM Dog. Beachten Sie auch die auskommentierte Zeile self.response.write('You dog!')
, die wie erwartet zurückkommt, wenn sie nicht kommentiert wird, also vermutlich kein Routenproblem. Ich kann einen einzelnen Hund über GET zurückgeben (dieser Code weggelassen) Code innerhalb der Klasse ViewAllDogs ist wahrscheinlich fehlerhaft, hat mein Bestes getan mit den GAE-Dokumenten.
index.yaml-Datei, die ich bestätigen, hochgeladen und hat den Status: "dienen"
indexes:
- kind: Dog
ancestor: yes
properties:- name: id
direction: desc
- name: name
direction: desc
- name: type
direction: desc
- name: weight
direction: desc
- name: boarded
direction: desc
app.yaml Datei:
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: main.app
main.py
import webapp2
from datetime import datetime
from google.appengine.ext import ndb
import webbrowser
import json
def gql_json_parser(query_obj):
result = []
for entry in query_obj:
result.append(dict([(p, unicode(getattr(entry, p))) for p in entry.properties()]))
return result
class Dog(ndb.Model):
""" Models an individual Dog """
id = ndb.StringProperty(required = True, indexed = True)
name = ndb.StringProperty(required = True, indexed = True)
type = ndb.StringProperty(required = True, indexed = True)
weight = ndb.IntegerProperty(required = True, indexed = True)
boarded = ndb.BooleanProperty(required = True, indexed = True)
@classmethod
def query_dog(cls, ancestor_key):
return cls.query(ancestor=ancestor_key).order(-cls.id)
class ViewAllDogs(webapp2.RequestHandler):
def get(self):
# self.response.write('You dog!')
parent_dog = self.request.get('parent_dog')
ancestor_key = ndb.Key("Dog", parent_dog or '*noDogs*')
query_data = Dog.query_dog(ancestor_key).fetch(10)
json_query_data = gql_json_parser(query_data)
self.response.headers['Content-Type'] = 'application/json'
self.response.write(json.dumps(json_query_data))
app = webapp2.WSGIApplication([
('/ViewDogs', ViewAllDogs)
], debug=True)
Ähnliche Fragen gibt es im Überfluss, einschließlich Query google app engine datastore for all entities, aber keine lösen mein Problem. Vielen Dank.
Hinweis der Index fehlt dem Index unterscheidet Sie definiert haben. Der benötigte Index muss genau das, was benötigt wird. –
Haben Sie es ein paar Minuten später noch einmal versucht? Wenn Sie Änderungen an Ihren Abfragen oder an Ihrer Datenstruktur vornehmen, dauert die Aktualisierung von Datenspeicherindizes nach der Bereitstellung einige Minuten (möglicherweise mehrere, je nach Größe Ihrer Daten). In einer Produktionsumgebung sollten Sie das Flag "--no-promote" verwenden, auf die Aktualisierung der Indizes warten und den Datenverkehr dann an die neue Version weiterleiten. –