【问题标题】:How to Sum nodes in firebase firestore?如何对firebase firestore中的节点求和?
【发布时间】:2019-08-14 03:56:10
【问题描述】:

我正在制作用于订购披萨的应用程序。

就像您在图片上看到的那样,我想从每个文档中获取所有名为“ukupno”的键值,并将其求和以获得最终价格。

这就是我获取购物车数据的方式:

  this.cartService.getCart(this.user.Uid).subscribe(res => {
      this.cart = res.map(i => {
        return {
          ...i.payload.doc.data(),
          id: i.payload.doc.id
        };
      });
    });
  }
 getCart(uid) {
    return this.firestore
      .collection("cart/")
      .doc(uid)
      .collection("/ubaceno")
      .snapshotChanges();
  }

【问题讨论】:

    标签: typescript firebase google-cloud-firestore angular7


    【解决方案1】:

    对于一个集合的所有文档,总结一个文档字段的值基本上有两种方法:

    1/ 查询整个集合,遍历结果(即querySnapshot),例如使用forEach(),并对循环中的所有字段值求和。要使用 angularfire2 做到这一点,您可能会使用 snapshotChanges()

    但是,如果您的集合包含大量文档,则效率不高,而且您的集合中的每个文档都需要读取一个文档。

    2/ 使用Distributed counters 来为您的所有文件保持最新的总和。要实现此方法,您必须在每次创建/修改/删除ubaceno 集合中的文档时更新计数器,将ukupno 字段的值添加到/从计数器中减去。

    您可以通过使用一组在创建/修改/删除时更新计数器的云函数,或者通过在前端的写入/修改/删除代码中集成计数器更新的事务来做到这一点。

    【讨论】:

      猜你喜欢
      • 2021-08-15
      • 1970-01-01
      • 2017-02-06
      • 2019-06-04
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多