如何获得扑朔迷离的Firestore文件数量

时间:2018-11-17 15:27:59

标签: firebase dart flutter google-cloud-firestore

我正在构建一个Flutter应用程序并使用Cloud Firestore。我想获取数据库中所有文档的数量。

我尝试过

Firestore.instance.collection('products').toString().length

但是没有用。

7 个答案:

答案 0 :(得分:2)

Firebase并未正式提供任何功能来检索集合中的文档数量,而是可以获取该集合的所有文档并获取其长度。

有两种方法:

1)

var defaultManifestFilename="./assets/"+defaultModelName+"-weights_manifest.json";

这将返回一个int值。但是,如果您不使用await,它将返回一个Future。

2)

final int documents = await Firestore.instance.collection('products').snapshots().length;

这将返回int值。

但是,这两种方法都会获取集合中的所有文档并对其进行计数。

谢谢

答案 1 :(得分:1)

应为-Firestore.instance.collection('products').snapshots().length.toString();

答案 2 :(得分:1)

首先,您必须从该集合中获取所有文档,然后才能通过文档列表获取所有文档的长度。下面可以完成工作。

Firestore.instance.collection('products').getDocuments.then((myDocuments){
 print("${myDocuments.documents.length}");
});

答案 3 :(得分:0)

以上建议将导致客户端下载集合中的所有文档以进行计数。解决方法是,如果不经常执行写操作,则可以将文档的长度放入Firebase远程配置中,并在从Firestore集合添加/删除文档时进行更改。然后,您可以在需要时从firebase远程配置中获取长度。

答案 4 :(得分:0)

 Future getCount({String id}) async => Firestore.instance
      .collection(collection) //your collectionref
      .where('deleted', isEqualTo: false)
      .getDocuments()
      .then((value) {
    var count = 0;
    count = value.documents.length;

    return count;
  });

这是飞镖语言...

答案 5 :(得分:0)

由于您正在等待未来,因此必须将其放置在异步函数中

QuerySnapshot productCollection = await 
Firestore.instance.collection('products').get();
int productCount = productCollection.size();

集合中的文档数量

答案 6 :(得分:-1)

Firestore.instance
    .collection("products")
    .get()
    .then((QuerySnapshot querySnapshot) {
  print(querySnapshot.docs.length);
});