简体   繁体   中英

Flutter firestore returns length 0 while there is data in firestore

I have the following code in flutter:

QuerySnapshot querySnapshot =
    await _firestore.collection("user1@gmail.com").get();

List Data = querySnapshot.docs.map((doc) => doc.data()).toList();

print("Length: ${Data.length}");

Here is my firestore database:

在此处输入图像描述

I get the following output:

I/flutter (11484): Length: 0

The Documents for each user email is variable, so I need the length of the documents. Also I need to get to the details of each document like content and title. How to do it? Thanks.

Could you try this:

int size = await FirebaseFirestore.instance.collection(collectionPath).get(GetOptions(source:Source.server))..size;

I will recommend finding a way to store the length of documents as a field in your Cloud Firestore database because calling the get function on a whole collection means filling up the mobile phone memory. (Say you have 500,000 users at least). This makes your app slow

You could have a field called count such that when you add a document, you can use the firebase transaction to update firebase.

For example:

// Create a reference to the document the transaction will use
DocumentReference documentReference = FirebaseFirestore.instance
  .collection('users')
  .doc(documentId);

return FirebaseFirestore.instance.runTransaction((transaction) async {
  // Get the document
  DocumentSnapshot snapshot = await transaction.get(documentReference);

  if (!snapshot.exists) {
    throw Exception("User does not exist!");
  }

  // Update the follower count based on the current count
  // Note: this could be done without a transaction
  // by updating the population using FieldValue.increment()

  // Perform an update on the document
  transaction.update(documentReference, {'followers': FieldValue.increment(1);});

  // Return the new count
  return newFollowerCount;
})
.then((value) => print("Follower count updated to $value"))
.catchError((error) => print("Failed to update user followers: $error"));

You can see more documentations here: FlutterFire

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM