首页 > 解决方案 > Firestore/Firebase - 为关注/关注的用户帖子建模数据的方法

问题描述

我有一个基于 Firestore 的应用程序。该应用程序的用户可以订阅其他用户的帐户。用户可能有太多关注者和太多帖子。在一个视图中,我想查询关注某个用户的用户的帖子。现在,每个帖子都有一个字段“creatorId”。实现这一点的一种简单方法是具有 OR 子句的查询,但 firestore 不支持。我有两种方法:

  1. 为每个关注的用户创建一个查询,然后将每个结果合并到一个承诺中。问题:视图应该显示分页的帖子,在这种方法中无法确定它。此外,一个用户可以关注多个用户,因此需要进行多次查询然后合并这些结果。

  2. 在每个帖子中添加这样的地图:

    followers: {
        follower1: true,
        follower3:true,
        followerX:true
        ...
    }

并执行如下查询:where("followers." + user.id, "==", true)。问题:如果用户有成千上万的追随者,追随者领域将非常非常大。

我的问题是:是否有另一种建模方法?您必须记住,que 视图应该是分页的,并且查询应该是最佳的。

标签: angularfirebaseionic-frameworkgoogle-cloud-firestore

解决方案


您可以使用三个集合对其进行建模。

用户:具有聚合关注计数的基本用户数据。

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)

希望这可以帮助


推荐阅读