【发布时间】:2020-07-24 22:47:01
【问题描述】:
我对 Firestore 中的大列表存储有一个问题(使用颤振)。 我有一个这样的数据库:
--数据库
-----发布
---------评论
并且每个帖子/评论都必须存储喜欢/添加收藏的用户列表。
但我知道解决方案不好,因为文档的大小是有限的 所以我想到了第二种解决方案,它包括在 Post / Comment 集合中添加一个集合“userData”,并为每个用户创建一个包含数据的文档。像这样 :
但第二种解决方案让我很困扰。因为当用户加载帖子列表和评论列表时,对于每个帖子/评论我都会做一个额外的查询来查找用户是否已经喜欢/添加了收藏。 因此,如果我每个帖子有 50 个 cmets,并且如果用户查看 100 个帖子,它会生成 10,000 个请求(100 * 50 * 2),并且每个用户都会生成。
恐怕这些请求的价格并不能涵盖应用程序的收益。
那么,第二种解决方案是推荐的解决方案吗?还有其他解决方案吗?
谢谢
【问题讨论】:
-
您只需要阅读当前用户的
userData文档,并检查他们的isFav字段,这样每个帖子/评论只需读取一个文档。还是我错过了什么?在代码中看到它可能会更清楚。 -
感谢您的回答!它需要一个检索帖子/评论的请求和一个检索用户数据的请求。因此,每个帖子/评论总共有两个请求。我可以通过仅使用一个查询检索多个帖子/评论来限制请求数量,但每个评论/帖子仍需要查询 userData。那么它可能是唯一的解决方案,我只是想确定
-
而不是做 1 个查询以获得 10 个帖子。我为获取 10 个帖子进行 1 次查询,为获取 userData 进行每个帖子的 1 个查询。所以我不是做 1 个查询,而是做 11 个查询。
标签: firebase flutter google-cloud-firestore