Flutter i Firestore: Jak najpierw uzyskać najnowsze?
Nov 25 2020
Jak uzyskać najnowsze pierwsze z 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);
});
Wydaje się, że problem występuje .where
podczas używania z .orderBy
!
Odpowiedzi
2 FrankvanPuffelen Nov 25 2020 at 22:34
Jeśli masz createdAt
pole z sygnaturą czasową lub inną zawsze rosnącą wartością, możesz uzyskać migawki w kolejności malejącej tego pola za pomocą:
stream: FirebaseFirestore.instance
.collection(Strings.factsText)
.orderBy('timestamp', descending: true)
.where(
Strings.category,
whereIn: [Strings.climateChange])
.snapshots(),
Zobacz także dokumentację FlutterFire dotyczącą Query.orderBymetody .
1 SK7 Dec 21 2020 at 19:29
W końcu rozwiązałem to, tworząc indeks w konsoli Firebase i działało to idealnie, więc teraz otrzymuję najpierw najnowsze.
W swojej bazie danych przeszedłem do Indeksów, aby utworzyć nowy indeks, dodałem nazwę mojej kolekcji, a następnie dla pól dodałem „kategorię” - malejąco i „znacznik czasu” - malejąco, kliknąłem Kolekcja, a następnie Utwórz indeks.