【问题标题】:getting number documents of a collection in Firebase in dart flutter在 dart flutter 中获取 Firebase 中集合的编号文档
【发布时间】:2022-01-08 01:34:24
【问题描述】:

我正在尝试检索创建的课程数量,创建的课程将显示在“课程”集合中。 这是我使用的代码

String course = '';
    FirebaseFirestore.instance
        .collection("Courses")
        .get()
        .then((QuerySnapshot querySnapshot) {
      course = querySnapshot.docs.length.toString();
    });

这是我的火力基地的截图

【问题讨论】:

  • 我调查了一下我试过了,但它在这里显示“snap”错误 FirebaseFirestore.instance.collection('Courses').get().then(snap => { size = snap .size });
  • 什么错误?请发布错误
  • 它无法识别单词 snap,所以我在哪里定义它
  • 您的代码引用Course(单数),而数据库有Courses(复数)。由于它们不一样,因此代码不会从显示的集合中读取。

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

集合不知道它们包含多少文档,因此要获得计数,您必须检索所有文档才能获得计数。这可能既费时又费力(成本)。

简单的解决方案是将计数保存在另一个集合中或集合中的已知文档位置。

一般来说,假设我们有三个集合,课程、用户和位置,每个集合可能有 0 到数千个文档。

Users
   user_0
      ...some fields
   user_1
      ...some fields

Courses
   course_0
      ...some fields
   course_1
      ...some fields

Locations
   location_0
      ...some fields
   location_1
      ...some fields

如前所述,如果文档数量有限,则只需读取用户(例如)并从快照中获取文档数量即可,并且很简单。但是,随着用户的增长,文档数量和成本也会随之增加。

更好且可扩展的解决方案是保留另一个计数集合

Document_Counts
   users_collection
      count: 2
   courses_collection
      count: 2
   locations_collection
      count: 2

然后当您想要用户数量时,只需阅读Document_Counts/users_collection 文档并从count 字段中获取计数。

Firestore 具有快速且简单的递增和递减功能,以便将文档添加到用户,例如,递增相同的计数字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-28
    • 2021-01-06
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多