Read subcollection from Firestore flutter
There are a lot of reasons for this behaviour. One can be that you query for documents that don’t exist.
Also take into consideration Firestore documentation for Listing subcollections of a document.
Taking this into account maybe trying to use this snippet will resolve your issue:
var spendsRef = await Firestore.instance.document('Spends/YOUR_DOCUMENT_ID');
spendsRed.getCollections() => then(collections => {
collections.forEach(collection => {
console.log('Found subcollection with id:', collection_id);
});
});
Let me know if this was helpful.
BLB
Mobile app development enthusiast and Flutter evangelist. Engineer by choice.
Updated on December 14, 2022Comments
-
BLB over 1 year
How to read subcollection from flutter firestore. I am using cloud_firestore. I am successfully adding data into firestore but couldn't retrieve it(tried and failed).
FirebaseUser user=await _firebaseAuth.currentUser(); uid=user.uid; return user.uid; } Future addSpend(Spend spend) { String date=DateFormat('MM-yyyy').format(spend.date); print("BLB DB $date"); return Firestore.instance.runTransaction((Transaction transactionHandler) { return Firestore.instance .collection("Spends") .document(uid).collection(date).document() .setData(spend.toJson()); }); }
I tried to read all that subcollections into list of objects. But failed.
// QuerySnapshot querySnapshot = await Firestore.instance.collection("Spends").document(Repository.uid).collection("10-2019").getDocuments(); // print("BLB ${querySnapshot.documentChanges}"); // var list = querySnapshot.documents; // return list; // List<DocumentSnapshot> templist; // List<Map<dynamic, dynamic>> list = new List(); // var path=Firestore.instance.collection("Spends").document(uid).collection("10-2019"); // // var collectionSnapshot=await path.getDocuments(); // print("BLB collection ${collectionSnapshot}"); // templist = collectionSnapshot.documents; // print("BLB templist ${templist.length}"); // list = templist.map((DocumentSnapshot docSnapshot){ // return docSnapshot.data; // }).toList(); // // return list; var doc = await Firestore.instance.collection('Spends').reference(); doc.getDocuments().then((res){ print("BLB DB ${res.documentChanges.length}"); }).catchError((e){ print("BLB DB error $e"); }); // doc.then((document){ // print("BLB DB ${document.exists}"); // }).catchError((e){ // print("BLB DB error $e"); // }); }
Model class
Spend(); String id,amount; String title; String category; DateTime date; String description; Spend.fromSnapshot(DocumentSnapshot snapshot) : id = snapshot.documentID, amount = snapshot['amount'], category = snapshot['category'], date = snapshot['date'], title = snapshot['title'], description = snapshot['description']; toJson(){ return { "amount":amount, "category":category, "date":date, "description":description, "title":title }; } }
Can someone through some light on me. I want to read that subcollection into list. I am using cloud_firestore: ^0.12.9+4.