Flutter & Firestore: Wie bekomme ich den neuesten zuerst?

Nov 25 2020

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 .wherebei der Verwendung mit zu sein .orderBy!

Antworten

2 FrankvanPuffelen Nov 25 2020 at 22:34

Wenn Sie ein createdAtFeld 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 .

1 SK7 Dec 21 2020 at 19:29

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.