2

我目前正在创建一种社交媒体应用程序,就像任何社交媒体应用程序一样,显示来自朋友的某种信息几乎是至关重要的。

我尝试了各种方法来向他们的朋友发布的用户显示帖子,但它可能会很慢,我怀疑这是最有效的方式。

起初我的数据库结构如下:

用户->(uid)->朋友(uid数组)帖子(帖子id数组)其他信息...

帖子->(帖子ID)-> image_url 其他信息...

使用此设置我: 1. 我获取当前登录的用户 uid 并在“用户”下获取属于该用户的文档。

  1. 然后我将用户朋友列表作为一个数组并循环遍历它们。

  2. 对于每个 uid,我再次查询“用户”并找到属于该用户的文档。

  3. 然后我在他们的“posts”数组中取了第一个“post id”,如果有的话

  4. 我拿了帖子id,在“帖子”集合中找到了对应的帖子并下载了它。

  5. 对每个用户 ID 重复步骤 3 - 5,直到没有更多帖子,或者我已经下载了 10 个。

这是我的第一种方法,但是我可以识别出几个问题,而且很可能还有几个我还没有想到的问题。

  1. 在第 2 步和第 4 步中。在这两个步骤中,我正在下载整个数组,因为 Firestore 不允许您下载数组中的某个索引。这会减慢这个过程,如果有的话

  2. 假设用户向下滚动以刷新新帖子,那么将很难加载更多帖子,因为即使我开始下载我离开的地方,也可以在那个时候添加另一个帖子,这会抛出整个系统。

我还在尝试将一个集合呼叫帖子与其中的帖子文档附加到每个用户。

还有其他想法吗?

4

1 回答 1

0

如果我正确地理解了您的问题,那么您正在尝试在 a和joins之间提供便利(即,您希望所有可以看到的按时间或相关性排序)。我建议创建一个 Firebase 函数,当他们的一个朋友创建帖子时,它会在用户的“供稿”集合下写入一条记录。该记录将包含帖子和对帖子进行排名/排序的必要信息。然后,您可以只进行两个查询(第一个查询相对较快且可分页),以便为用户提供提要。如果用户获得了一个新朋友,那么只需使用另一个 Firebase 函数来提取该朋友最近(可能不是从一开始)的帖子。userpostspostsuserReference

于 2018-05-01T23:54:56.067 回答