【发布时间】:2018-08-24 14:27:31
【问题描述】:
我正在构建一个包含Users、Sports Teams 和Articles 的应用程序。
user 可以关注任何sports team,其中sports team 一些users 将成为贡献者并发布articles 供关注者查看。
一百万 users 可以关注同一个 sports team,但只有少数用户,例如10,将是可以发布 articles 关于特定 sports team 的贡献者。
阅读 Firestore,我可能倾向于按以下方式构建数据:
例如结构:
-
Users(根集合)- 用户(文档)
- 以下SportsTeamsID(地图)
- 用户(文档)
-
Sports Teams(根集合)- 运动队(文档)
- contributingUsersID(地图)
-
Posts(子集合)- 发布(文档)
- 运动队(文档)
根据我的理解,如果我想执行查询以列出我为其贡献者的所有 Sports Teams,我只需在 Sports Teamswhere('contributingUsersIDs.someUserID', '==', true) 上进行提取。
问题:
您打算如何进行一个简单的查询来检索您作为特定用户关注的所有Sports Teams 文档的列表?在Datastore 中,我只需要ofy().load().keys(followingSportsTeamsIDsKeys).values()。
正确的解决方案是简单地进行提取以检索用户拥有的所有followingSportsTeamsIDs,然后如果说他们遵循一千个不同的Sports Teams 来简单地执行db.collection("teams").document("someTeamID").getDocument 并为每个 ID 发出请求 for在客户端循环?这似乎太过分了?但也许不是因为Firestore 仍然是一个持久连接?
或者,我该如何为Firestore 重构我的数据?
【问题讨论】:
标签: firebase google-cloud-firestore