如何建模自动添加来自 firebase 数据库上每个关注者的帖子的时间线

Mor*_*red 3 android nosql firebase firebase-realtime-database

我正在构建一个社交应用程序,我有一个关于 firebase 的数据库,其结构如下:

tJWRbfqUUbSQn5eI8ZS5vPG9znr1

  bio:

  coverPhotoUrl:

  email:

  firstname:

  imgUrl:

  lastname:

  name:

  phone:

  posts

    -KPN0b7QmNp8AjYy4yFl
    -KPXmtvZdiQ--QjZ-j3m
    -KPc7PpDkmFNU9JjlIJP
    -KPc7PptOulQdrpsrGEp
    -KPc7Pq6JC7bjt8-sRFU
    -KPc7PqJ2651EIQWXIv6
Run Code Online (Sandbox Code Playgroud)

顶级键是用户 ID,所以我对每个用户都有这个,每个用户也有帖子,在帖子节点内,我有评论,以与帖子完全相同的方式推送。我的问题是,我有点好奇我将如何为新闻源建模,现在对我而言,新闻源是您和您关注的每个人的帖子列表,按照发布时间的确切顺序排列时间线也只是所述用户按该顺序发布的帖子。

我通过迭代用户的帖子来正确地完成了时间线 我尝试以两种方式做新闻源部分,这有错误,我认为效率不高

  1. 由于每个用户都在他自己的节点中维护了一个他的关注者列表,我这样做是为了让用户在任何时候发帖时,他不仅会在自己的“帖子节点”中写道,还会在他的“新闻源”节点之后的每个其他人中写道

    这种方法的缺点 如果取消关注,我无法从用户 B 的时间轴 b 中删除用户 A 的帖子。我让每个用户都可以在每个其他人的节点中进行写入,正如我所读到的,这不是一个很好的做法。

  2. 在用户 B 的 Timeline 节点中维护用户 A 的 post 节点的 url,这样就可以解决方法 1 的 con B。

这种方法的缺点 我不知道如何实现它。

我不知道是否有任何教科书式的方法来做到这一点(当然必须有,那里只有这么多社交网络平台),如果有我想知道,如果你能指点我如何(不是帮助我)实现我的方法 2,我将非常感激。

另外,我正在关注 这个类似的问题

这并没有完全回答我的问题,但看起来是一个非常有趣的方法

Kev*_*eil 5

我认为您正在寻找的解决方案被称为客户端扇出。这篇 Firebase 博客文章提供了很好的解释,并将为您指明正确的方向。

客户端扇出以实现数据一致性