如何对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中的节点求和?的主要内容,如果未能解决你的问题,请参考以下文章
React Native Firebase:如何显示 Firestore 中的文本?
如何使用 Firebase Cloud Firestore 对方法进行单元测试?