【问题标题】:Firestore query with array of strings带有字符串数组的 Firestore 查询
【发布时间】:2018-06-16 18:43:39
【问题描述】:

我尝试制作社交网络(如 instagram)

用户有帖子和关注者等

我希望仅来自我关注的用户的主页供稿显示帖子。

用户有一个数组,其中包含他关注的用户的 ID。所以想法是从 id 等于 id 之一的集合“帖子”中查询,并按时间戳对它们进行排序并限制它们。

我可以为以下数组中的每个人创建 for 循环,但这对于超过 100 个以下用户来说将无法使用。

编辑我认为可以解决的方法

您好,我不知道我是否做得对,但这是我的社交网络解决方案,如 instagram 或任何其他用户关注其他用户并从他们的帖子中按日期排序的提要。

每个用户都有自己的收集时间线,用户应该在他的提要中看到帖子引用(postId、createdAt、createdBy),当用户开始关注其他用户时,它将把他所有的帖子都放到提要中。对于显示提要,我只是在用户时间轴上调用,按日期对其进行排序并仅请求其中的 25 个。

当用户启动应用程序时,我会遍历所有关注者,并从他们的帖子集合中请求他们的帖子比 lastTimeline 时间戳更年轻,如果他们有的话,我会将它们添加到时间轴中。

我很乐意听取您的意见。

【问题讨论】:

  • 这太宽泛了。
  • 你有什么建议吗?还是改变数据结构?谢谢

标签: ios firebase firebase-realtime-database swift4 google-cloud-firestore


【解决方案1】:

您可以遍历所有关注的用户 ID,然后请求每个用户的前 5 个帖子。 或者使用某种分页方式

【讨论】:

  • 但是如果您有 1000 个用户关注,这将很糟糕。数千个电话,所以我会收到 5k 个帖子然后订购它们?我写在这里是因为我很绝望,但我发现了这个。基本上,您管理每个用户的时间线也很疯狂。链接 - firebase.googleblog.com/2015/10/…
  • 不太可能有人必须关注 1.000 个用户和每个帖子。这基本上意味着他/她每天花费超过 20 个小时阅读帖子......如果确实如此,那么就没有办法获取和排序帖子。那么最好的方法是分页用户。首先获取前 10 个用户,以及他们的前 5 个帖子,并为用户提供请求下一个 10 个用户的可能性,依此类推...
猜你喜欢
  • 2021-12-04
  • 2021-10-18
  • 2020-06-01
  • 2019-10-28
  • 1970-01-01
  • 2010-12-31
  • 2012-03-23
  • 2015-06-09
相关资源
最近更新 更多