Firestore:有没有一种方法可以获取所有收集文档及其子收集文档

时间:2019-09-21 13:19:17

标签: firebase google-cloud-firestore

我有一个集合用户,这些用户具有一个称为“关于”的子集合。 “关于”的注释具有安全规则,只有具有角色的用户才能使用“管理员”访问它们。现在一切正常,依此类推,但是当经理决定更新他的姓名,姓氏或imageUrl时,我的问题开始了。 由于所有注释还具有名为“ add byBy”的属性,其中包含用户名,姓氏,id和imageUrl,因此我需要遍历所有用户及其有关子集合文档的所有注释,因此我可以检查每个文档并使用cloud功能对其进行更新。 到目前为止,看起来我将不得不重构数据库并将“关于”的注释存储在单独的集合中。但是,也许有一种方法可以以另一种(合理的)方式来获取所有集合文档及其所有子集合文档。 我宁愿不重构数据库,但也许这是目前唯一的解决方案。 你怎么看?

数据库模型:enter image description here

1 个答案:

答案 0 :(得分:1)

  

但是也许有一种方法可以以另一种(合理的)方式来获取所有集合文档及其所有子集合文档。

不幸的是,没有。 Firestore中的查询很浅,它们仅从运行查询的集合中获取项目。无法通过单个查询从顶级集合和其他子集合中获取文档。 Firestore不一次性支持跨不同集合的查询。单个查询只能使用单个集合中的文档属性。 IMO,您可以继续查询数据库多次以获得所需的值。并没有想象的那么慢。

根据您的情况,另一种可能的解决方案是使用collection group query。为了使用此新功能,所有子集合都应具有相同的名称。

现在由您决定是否要使用多个查询来获取数据,还是使用集合组查询甚至重构数据库来满足您的需求。