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

时间:2016-08-21 15:37:17

标签: android firebase firebase-realtime-database nosql

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

tJWRbfqUUbSQn5eI8ZS5vPG9znr1

  bio:

  coverPhotoUrl:

  email:

  firstname:

  imgUrl:

  lastname:

  name:

  phone:

  posts

    -KPN0b7QmNp8AjYy4yFl
    -KPXmtvZdiQ--QjZ-j3m
    -KPc7PpDkmFNU9JjlIJP
    -KPc7PptOulQdrpsrGEp
    -KPc7Pq6JC7bjt8-sRFU
    -KPc7PqJ2651EIQWXIv6

顶级密钥是用户ID,所以我对每个用户都有,每个用户也有帖子,在帖子节点内,我有评论,推送方式与帖子完全相同。 我的问题是,我对我将如何为新闻源建模感到有点好奇,现在一个新闻源给我的是你和你所关注的每个人的帖子列表,按照他们发布的时间的确切顺序时间轴也只是该订单中所述用户的帖子。

我通过迭代来自用户的帖子正确完成了时间线 我试图用两种方式来做新闻传播部分,这有一些错误,我觉得效率不高

  1. 由于每个用户都在自己的节点中维护了一个关注者列表,因此无论何时用户发帖,他都会在自己的“帖子节点”中写入,但也会在其他所有人中写入他的'新闻'节点

    这种方法的缺点 一个。如果取消关注,我无法从用户B的时间线中删除用户A的帖子 湾我给每个用户提供了在每个人的节点上写的权限,正如我所读到的那样,这不是一个很好的做法。

  2. 在用户B的时间轴节点中维护用户A的帖子节点的URL,这将解决方法1的con B.

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

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

    此外,我正在关注this similar question

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

2 个答案:

答案 0 :(得分:4)

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

Client-side fan-out for data consistency

答案 1 :(得分:0)

看起来你需要一个新的数据结构来保持分数谁跟随谁。使用该信息来构建新闻源。这样就不需要一个用户“写入”另一个用户。每个帖子只为用户存储一次创建帖子的原因。如果跟随和取消关注发生变化,您可以直接重新计算哪些帖子包含在新闻源中