Flutter & Firestore: come ottengo prima il più recente?
Come ottengo il primo più recente da 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);
});
Il problema sembra riguardare .wherequando si utilizza con .orderBy!
Risposte
Se hai un createdAtcampo con un timestamp, o un valore altrimenti sempre crescente, puoi ottenere gli snapshot in ordine decrescente di quel campo con:
stream: FirebaseFirestore.instance
.collection(Strings.factsText)
.orderBy('timestamp', descending: true)
.where(
Strings.category,
whereIn: [Strings.climateChange])
.snapshots(),
Vedere anche la documentazione FlutterFire sul Query.orderBymetodo .
Alla fine l'ho risolto creando un indice nella console Firebase e questo ha funzionato perfettamente, quindi ora ricevo prima l'ultima.
Nel mio database sono andato su Indici per creare un nuovo indice, ho aggiunto il nome della mia raccolta, quindi per i campi ho aggiunto "categoria" - discendente e "timestamp" - discendente, ho fatto clic su Raccolta e poi su Crea indice.