我正在开发一个Flutter
社交应用程序,其中有一个posts
部分。每个post
可以有comments
,每个comment
可以有replies
,它们在类级别上与comment
不同。我正在使用Firebase Firestore
作为我的后端。正如Firestore
的官方文档所指出的,有三种方法来构建我们的数据,如下所示:顶级集合、文档和子集合在我的应用中,对于posts
,我有一个名为posts
的顶级集合,它包含所有posts
。现在每个post
可以有数千个comments
,因此,将comments
作为Map值存储在每个post
文档中并不是一个好主意,因为这将超过每个文档1 MB的限制,并且添加和删除comment
也将非常困难。所以现在我不能决定是否应该在每个post
文档中为comments
创建一个顶级集合,还是为comments
创建一个子集合。对于每个comment
的replies
也是如此。我是否应该再次创建另一个顶级-在每个comment
文档中为replies
指定一个级别集合还是replies
的子集合?非常感谢您的建议和帮助!
1条答案
按热度按时间ct2axkht1#
因此,现在我无法决定是否应该为每个post文档中的评论创建一个顶级集合或一个子集合。
从技术或性能Angular 来看没有差异,因为:
1.通过“集合组”查询,可以查询所有集合中具有相同ID(即
comments
或replies
)的所有单据。主要的区别可能在于,在Firestore控制台中,您可以轻松地显示特定帖子的子集合。
请注意,如果您选择
comments
或replies
的根集合,您不应该忘记在这些子文档中保存父文档ID,以便您可以查询与特定父文档对应的ID。