【问题标题】:Firestore: Storing user comments in firestoreFirestore:在 Firestore 中存储用户评论
【发布时间】:2020-12-04 18:05:25
【问题描述】:
假设您在 Firestore 中有一个“帖子”模型,其中包含图像、描述、评级、cmets 等。您希望在用户点击帖子时显示 10 或 15 个 cmets。问题是:
您会将 cmets 作为字段存储在“Posts”模型中,还是会为此创建另一个新的数据模型“Comments”?
在第一种情况下,我想知道如果帖子有 1.000.000 cmets,如何处理?据我所知,您无法对字段进行分页。每次你需要获取所有的 cmets 和我认为它有点沉重和无用的请求。存储 cmets 的最佳方式是什么?
【问题讨论】:
标签:
firebase
google-cloud-firestore
【解决方案1】:
您会将 cmets 作为字段存储在“帖子”模型中,还是会为此创建另一个新的数据模型“评论”?在第一种情况下,我想知道如果帖子有 1.000.000 cmets,如何处理?
没有“100% 正确”的方法可以做到这一点,但您的建模应该符合预期用例的要求。在不知道如何查询这些数据的情况下,您可能会做出错误的设计决策。
请注意,Firestore 文档的最大大小为 1MB。如果您期望有大量帖子,那么这根本不适合单个文档,您应该将每个帖子作为单独的文档存储在子集合中。
如果您需要对任何项目进行分页,则应始终将它们存储为单独的文档。 Firestore 查询无法获取部分文档 - 读取始终获取文档中的所有内容。
【解决方案2】:
其实你自己已经回答了你的问题:)
我会创建另一个数据模型/表,以便您更轻松地实现:
- 分页
- 删除/编辑
- 喜欢
- 对 cmets 等的回答...
这带来了更多的复杂性,但却是一种更优雅、更灵活的解决方案。
第一个解决方案只有在不可能有 100 万个 cmets 的情况下才有意义。例如在 Intranet 应用程序中。但最好不要这样做,因为努力其实是一样的。