以高效的方式在Firestore中存储和查询帖子

时间:2019-03-23 09:34:40

标签: firebase google-cloud-firestore

所以我需要存储由用户创建的帖子,现在是数据模型,问题是,将所有现有的帖子带到具有CreatorUserID字段的帖子集合中,将使其能够显示属于用户的帖子。

现在,用户有一个名为“关注者”的子集合,其中包含关注的人的ID,这是因为我不确定查询将如何显示仅显示该用户关注的人的帖子。

当收藏集中有10mio +个帖子时,我也担心性能。

1 个答案:

答案 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将所有查询的结果合并到一组帖子中