2
votes

Flutter: Comment puis-je obtenir le nom de tous les documents d'une collection dans Firestore

Je crée une application dans Flutter avec Firestore maintenant, je vais parcourir tous les documents d'une collection et je veux obtenir le nom du document (id) et le champ des documents et faire quelque chose avec ça. J'ai déjà créé une liste où les données sont affichées mais je ne peux pas faire quelque chose avec cela, par exemple, l'ajouter à une liste ou quelque chose. Merci


1 commentaires

Votre question est assez vague. Sur quoi êtes-vous coincé exactement? Avez-vous lu la documentation et vu un exemple de code?


4 Réponses :


6
votes

Vous pouvez le faire en obtenant une liste de documents comme:

documents.forEach((data) => print(data));

Et après cela, vous pouvez parcourir cette liste et obtenir des données:

final QuerySnapshot result =
          await Firestore.instance.collection('myCollection').getDocuments();
final List<DocumentSnapshot> documents = result.documents;


0 commentaires

5
votes

Tout d'abord, faites la référence de Firestore

print(doc.exists);

Ensuite, créez un itérateur pour obtenir tous les documents de FireStore

print(doc.documentID);
  • vous pouvez obtenir des données spécifiques telles que l'e-mail à titre d'exemple:
print(doc.data['email'];
  • vous pouvez obtenir l'identifiant du document par
 userRef.getDocuments().then((snapshot) {
      snapshot.documents.forEach((doc) {
        print(doc.data);
      });
    });
  • peut vérifier si le document existe ou non par
final userRef = Firestore.instance.collection('users');


0 commentaires

0
votes

Voici une réponse mise à jour. Récemment, getDocuments est obsolète par Firebase dans Flutter.

Au lieu de cela, nous pouvons utiliser get pour interroger tous les documents de la collection.

comme ceci

documents.forEach((data) => print(data));

et pour lister tout le document, il vous suffit de boucler la liste des documents comme ceci

final QuerySnapshot result =
      await Firestore.instance.collection('myCollection').get();
final List<DocumentSnapshot> documents = result.docs;


0 commentaires

0
votes

Vous pouvez également obtenir le nom des documents en enveloppant un widget avec FutureBuilder comme ceci:

FutureBuilder(
              future: FirebaseFirestore.instance
                  .collection("collection_name")
                  .get(),
              builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
                if (snapshot.hasData) {
                  QuerySnapshot documents = snapshot.data;
                  List<DocumentSnapshot> docs = documents.docs;
                  docs.forEach((data) {
                    print(data.id);
                  });
                } else {
                  print("nodata");
                }
                return Container();
              })


0 commentaires