Flutter & Firestore: Wie bekomme ich den neuesten zuerst?
Wie bekomme ich die neueste Version von Firestore?
FirebaseFirestore.instance.collection(Strings.factsText)
.where(
Strings.category,
whereIn: [Strings.climateChange])
.orderBy('timestamp', descending: true)
.snapshots(),
...
final factsDocs = snapshot.data.documents;
return FactsListContainer(factsDocs: factsDocs);
});
Das Problem scheint .where
bei der Verwendung mit zu sein .orderBy
!
Antworten
Wenn Sie ein createdAt
Feld mit einem Zeitstempel oder einem ansonsten immer inkrementierenden Wert haben, können Sie die Schnappschüsse in absteigender Reihenfolge dieses Felds abrufen mit:
stream: FirebaseFirestore.instance
.collection(Strings.factsText)
.orderBy('timestamp', descending: true)
.where(
Strings.category,
whereIn: [Strings.climateChange])
.snapshots(),
Siehe auch die FlutterFire-Dokumentation zur Query.orderByMethode .
Ich habe es endlich gelöst, indem ich einen Index in der Firebase-Konsole erstellt habe. Das hat perfekt funktioniert. Jetzt bekomme ich zuerst die neueste Version.
In meiner Datenbank ging ich zu Indizes, um einen neuen Index zu erstellen, fügte meinen Sammlungsnamen hinzu und fügte dann für die Felder 'Kategorie' - absteigend und 'Zeitstempel' - absteigend hinzu, klickte auf Sammlung und dann auf Index erstellen.