Firestore/Firebase - 为关注/关注用户帖子建模数据的方法

Posted

技术标签:

【中文标题】Firestore/Firebase - 为关注/关注用户帖子建模数据的方法【英文标题】:Firestore/Firebase - Approach to model data for followed/following user post 【发布时间】:2019-08-24 11:21:05 【问题描述】:

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

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

    为每个帖子添加这样的地图:

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

然后进行这样的查询:where("followers." + user.id, "==", true).问题:如果一个用户有成千上万的关注者,那么关注者字段会非常大。

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

【问题讨论】:

【参考方案1】:

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

用户:带有汇总关注计数的基本用户数据。

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)

希望对你有帮助

【讨论】:

如果我们需要从给定用户的所有关注用户中提取帖子,这将如何工作?

以上是关于Firestore/Firebase - 为关注/关注用户帖子建模数据的方法的主要内容,如果未能解决你的问题,请参考以下文章

检索数据时出现 Vue/Firestore/Firebase 错误

Firestore/Firebase 模拟器未运行

Macos 部署目标 firestore/firebase_core

Firestore/Firebase 无法从文件夹中获取图像

插件 cloud_firestore 和 firebase_auth 阻止与 android Emulator 同步

Android - Firestore/Firebase 实时数据库“.info/connected”返回错误的连接状态