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



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

现在,用户

有一个名为"关注者"的子集合,其中包含关注者的ID,问题是我不确定查询如何仅显示用户关注的人员的帖子。

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

为了在 Firestore 中查询文档,要查询的数据需要位于要查询的文档上,无法通过另一个集合中的文档的数据来查询集合。这就是为什么您的用例有点棘手的原因。它可能看起来不是很优雅,但这是一种解决它的方法:

我们使用两个集合,用户和帖子。

User
    - email: string
    - followingUserIDs: array with docIds of users you are following
Posts
    - postName: string
    - postText: string
    - creatorUserID: string

要查找属于登录用户关注的所有用户的所有帖子,我们可以在代码中执行以下操作:

1 检索登录的用户文档

2 对于"以下用户 ID"数组中的每个 id,我会向 Firestore 查询帖子。在 JavaScript 中,它会像这样:

followingUserIDs.map(followingUserId => {
        return firestore.collection('Posts', ref => ref.where('creatorUserID', 
        '==', followingUserId));
    })

3 将所有查询的结果合并到一个帖子数组中

最新更新