angular - Firestore/Firebase - 为关注/关注的用户帖子建模数据的方法
问题描述
我有一个基于 Firestore 的应用程序。该应用程序的用户可以订阅其他用户的帐户。用户可能有太多关注者和太多帖子。在一个视图中,我想查询关注某个用户的用户的帖子。现在,每个帖子都有一个字段“creatorId”。实现这一点的一种简单方法是具有 OR 子句的查询,但 firestore 不支持。我有两种方法:
为每个关注的用户创建一个查询,然后将每个结果合并到一个承诺中。问题:视图应该显示分页的帖子,在这种方法中无法确定它。此外,一个用户可以关注多个用户,因此需要进行多次查询然后合并这些结果。
在每个帖子中添加这样的地图:
followers: {
follower1: true,
follower3:true,
followerX:true
...
}
并执行如下查询:where("followers." + user.id, "==", true)。问题:如果用户有成千上万的追随者,追随者领域将非常非常大。
我的问题是:是否有另一种建模方法?您必须记住,que 视图应该是分页的,并且查询应该是最佳的。
解决方案
您可以使用三个集合对其进行建模。
用户:具有聚合关注计数的基本用户数据。
users/{userID}
-- userInfo (any)
-- followerCount (number)
-- followedCount (number)
关系:存储用户之间的关系。
relationships/{followerID_followedID}
-- followerId (string)
-- followedId (string)
-- createdAt (timestamp)
帖子:存储用户创建的帖子。
posts/{post_ID}
-- userId (string)
-- post_info (map)
-- createdAt (timestamp)
希望这可以帮助
推荐阅读
- javascript - 如何在 VueJs 中制作表格并在 .NET Core Web 应用程序中添加 MSSQL 数据库接收的值
- azure-devops - 是否允许从 Azure-Devops 与我的数据中心建立 VPN 连接?
- python - 列表理解输出
- python - Matplotlib 动画擦除以前的数据
- javascript - 如何修复页面加载时音频不自动播放的问题?- html
- amazon-web-services - Cloudformation 自定义资源
- vba - 是否可以在 VBA 中使用 MyServices.ClipboardProxy?
- rust - 通过 Rumble 从蓝牙 5 LE DevBoard 读取串行数据流
- mysql - 缺少外键列
- reactjs - 如何修复solidity和reactjs端到端交互中的“节点错误:无法读取null的属性'from'”错误