Ich habe eine Entität mit mehr als 25 Eigenschaften. Von diesen 25 werden 15 Eigenschaften in der Frontend-Tabelle angezeigt. Diese Tabelle ermöglicht es, eine Sortierung (beide ASC & DESC) für jede Eigenschaften durchzuführen.Individuelle Datasore Abfrage oder für große Anzahl von Eigenschaften
Um dies im Backend zu behandeln, überprüfe ich den Auftragstyp und schreibe Abfrage für jede Eigenschaft für ASC und DESC Reihenfolge. Um die 15 Datensätze sortieren zu können, habe ich eine Menge Zeilencode, der ähnlich aussieht. Einziger Unterschied ist der Auftragstyp.
-Code sieht wie folgt aus:
@classmethod
def retrieve(cls, order, limit, offset):
if order == '-property_1':
results = cls.query(ancestor=parent).order(-cls.property_1).fetch(limit, offset=offset)
elif order == 'property_1':
results = cls.query(ancestor=parent).order(cls.property_1).fetch(limit, offset=offset)
.
.
.
.
elif order == '-property_15':
results = cls.query(ancestor=parent).order(-cls.property_15).fetch(limit, offset=offset)
elif order == 'property_15':
results = cls.query(ancestor=parent).order(cls.property_15).fetch(limit, offset=offset)
Und seine Erstellung 2-Datenspeicher-Index für jede Eigenschaft.
- kind: EntityName
ancestor: yes
properties:
- name: property_1
- kind: EntityName
ancestor: yes
properties:
- name: property_1
direction: desc
Meine Frage hier ist Gibt es eine bessere Möglichkeit, diesen Fall zu behandeln?
Die erste Zeile dieser Antwort scheint unnötig wiederholende Code zu fördern; Es gibt eindeutig einen besseren Weg, dies zu tun (siehe Gregs Antwort). – ChrisC73
@ ChrisC73 Ich habe nur den Indexierungs/Abfrage-Aspekt diskutiert - ich habe die erste Zeile aktualisiert, um das zu reflektieren. –
vereinbart; Die potentielle Anzahl der erforderlichen Indizes ist definitiv ein Problem – ChrisC73