Firestore:是否有一种方法可以获取所有集合文档以及它们的子集合文档?

9 浏览
0 Comments

Firestore:是否有一种方法可以获取所有集合文档以及它们的子集合文档?

我有一个用户的集合,其中有一个名为“notes about”的子集合。 "notes about"有安全规则,只有具有“manager”角色的用户才能访问它们。现在一切都很顺利,但当管理员决定更新他的名字,姓氏或图像时,我的问题就开始了。

由于所有的笔记都有一个名为“addedBy”的属性,其中包含用户的名字、姓氏、ID和图像URL,所以我需要遍历所有的用户和他们的“notes about”子集合文档,这样我才能检查每个文档并用云函数更新它们。

到目前为止,看起来我将不得不重构我的数据库,并将“notes about”存储在一个单独的集合中。但也许有一种方法可以以另一种(合理的)方式获取所有集合文档及其子集合文档。

我宁愿不重构我的数据库,但也许那是目前唯一的解决方案。

你有什么想法?

数据库模型:enter image description here

0
0 Comments

Firestore: 是否有一种方法可以获取所有集合文档及其子集合文档?

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

您的情况下另一个可能的解决方案可能是使用集合组查询。为了使用这个新功能,所有的子集合应该有相同的名称。

现在轮到您决定是否使用多个查询来获取数据,或者使用集合组查询,甚至对数据库进行重构以满足您的需求。

是的,这就是我想的。对我来说,多次查询数据库不是问题,如果每次数据库读取的成本不会增加,而且用户越多,成本就越高。无论如何,谢谢您的答复!

0