Flutter & Firestore: Comment puis-je obtenir le plus récent en premier?
Comment puis-je obtenir le plus récent d'abord auprès de 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);
});
Le problème semble être .where
lié à l'utilisation avec .orderBy
!
Réponses
Si vous avez un createdAt
champ avec un horodatage, ou une valeur toujours incrémentée, vous pouvez obtenir les instantanés dans l'ordre décroissant de ce champ avec:
stream: FirebaseFirestore.instance
.collection(Strings.factsText)
.orderBy('timestamp', descending: true)
.where(
Strings.category,
whereIn: [Strings.climateChange])
.snapshots(),
Consultez également la documentation FlutterFire sur la Query.orderByméthode .
Je l'ai finalement résolu en créant un index dans la console Firebase et cela a parfaitement fonctionné, alors maintenant je reçois la dernière en premier.
Dans ma base de données, je suis allé aux index pour créer un nouvel index, j'ai ajouté le nom de ma collection, puis pour les champs, j'ai ajouté «catégorie» - décroissant et «horodatage» - décroissant, j'ai cliqué sur Collection puis sur Créer un index.