所以我需要存储由用户创建的帖子,现在是数据模型,问题是,将所有现有的帖子带到具有CreatorUserID字段的帖子集合中,将使其能够显示属于用户的帖子。
现在,用户有一个名为“关注者”的子集合,其中包含关注的人的ID,这是因为我不确定查询将如何显示仅显示该用户关注的人的帖子。
当收藏集中有10mio +个帖子时,我也担心性能。
答案 0 :(得分:1)
要在Firestore中查询文档,需要将您要查询的数据放在您要查询的文档上,无法通过另一个集合中的文档数据来查询集合。这就是为什么您的用例有点棘手的原因。看起来可能不太优雅,但这是解决问题的一种方法:
我们使用两个集合,即用户和帖子。
User
- email: string
- followingUserIDs: array with docIds of users you are following
Posts
- postName: string
- postText: string
- creatorUserID: string
要找到属于登录用户的所有用户的所有帖子,我们可以在代码中执行以下操作:
1检索登录的用户文档
2对于“ followingUserIDs”数组中的每个ID,我将查询Firestore中的帖子。在JavaScript中,类似于:
followingUserIDs.map(followingUserId => {
return firestore.collection('Posts', ref => ref.where('creatorUserID',
'==', followingUserId));
})
3将所有查询的结果合并到一组帖子中