如何对firebase firestore中的节点求和?

Posted

技术标签:

【中文标题】如何对firebase firestore中的节点求和?【英文标题】:How to Sum nodes in 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();
  

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

以上是关于如何对firebase firestore中的节点求和?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用节点读取在 Firestore 中创建的最新文档?

Firestore 如何存储对文档的引用/如何检索它?

React Native Firebase:如何显示 Firestore 中的文本?

如何使用 Firebase Cloud Firestore 对方法进行单元测试?

Firebase Firestore iOS:如何将图像保存到 Firestore 中的集合中?

如何修复 React Native 中的 Firebase/firestore 错误?