【问题标题】:Firestore: Is there a way to get all collection documents with their sub collection documents [duplicate]Firestore:有没有办法获取所有集合文档及其子集合文档[重复]
【发布时间】:2020-01-22 05:45:57
【问题描述】:

我的收藏用户有一个名为“notes about”的子收藏。 “Notes about”具有安全规则,只有具有角色的用户 - “manager”才能访问它们。现在一切正常等等,但是当经理决定更新他的名字、姓氏或 imageUrl 时,我的问题就开始了。 由于所有的笔记也都有一个名为“addBy”的属性,其中包含用户名、姓氏、id 和 imageUrl,我需要查看所有用户及其关于子集合文档的所有笔记,以便我可以检查每个文档并使用云功能对其进行更新。 到目前为止,看起来我将不得不重构我的数据库并将“关于”的“注释”存储在一个单独的集合中。但也许有一种方法可以以另一种(合理的)方式获取所有集合文档及其所有子集合文档。 我宁愿不重构我的数据库,但也许这是目前唯一的解决方案。 你都有些什么想法呢?

数据库模型:

【问题讨论】:

标签: firebase google-cloud-firestore


【解决方案1】:

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

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

在您的情况下,另一种可能的解决方案可能是使用collection group query。为了使用这个新特性,所有的子集合都应该有相同的名字。

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

【讨论】:

  • 是的,我就是这么想的。多次查询数据库对我来说不是问题,如果每次读取数据库的成本不会增加,而且我拥有的用户越多,它可能获得的成本就越高。无论如何,感谢您的回答!
猜你喜欢
  • 2020-02-27
  • 2021-07-27
  • 2018-04-03
  • 2020-04-16
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多