【问题标题】:Using firebase real time database or firestore to set up rss feed or feed for social media platform使用 firebase 实时数据库或 firestore 为社交媒体平台设置 rss feed 或 feed
【发布时间】:2018-12-22 04:21:17
【问题描述】:

我想创建一个应用程序,其中包含诸如 rss 提要或您可能会在 instagram 或 facebook 上看到的提要之类的内容。我目前正在尝试使用 firebase 实时数据库或 firestore 作为后端来存储显示给用户的帖子来完成此操作。我似乎想不出一种方法来完成这项工作。理想的解决方案按时间顺序发送一个帖子列表,不需要在客户端进行任何额外的排序。当我尝试使用实时数据库时,我可以轻松地将所有相关帖子添加到自己的路径中并在客户端对它们进行排序(或者可能使用云功能在服务器端对数据进行排序)。在尝试使用firestore提出解决方案时,我的想法是让帖子文档包含对包含订阅者/关注者列表的子集合的引用,但我似乎无法找到基于以下内容选择帖子的方法文档是否存在于引用的子集合中。

仅供参考,我想要理想解决方案的原因是因为分页。

【问题讨论】:

  • this 你在找什么?
  • 关于分页,this 是一种推荐的方式,您可以通过将查询游标与 limit() 方法相结合来对查询进行分页。我还建议您看看这个 video 以便更好地理解。
  • @AlexMamo 感谢提供额外的链接,尤其是关于分页的信息。
  • 不客气。如果您认为我在这些帖子中的回答对您有所帮助,请考虑投票。谢谢!

标签: android firebase firebase-realtime-database google-cloud-firestore


【解决方案1】:

我几乎没有使用 Firestore 的经验。但是,使用 Firebase,如果我理解正确的话,这很容易实现。

第一部分是存储您的日期,确保将其存储为时间戳 (date.getTime())。

然后您可以执行以下操作:

db.ref('posts').orderByChild('date').limitToLast(10)

这允许您获取最后 10 个帖子。要获取前 10 个帖子,您可以从最早的帖子中获取日期并执行以下操作:

db.ref('posts').orderByChild('date').endAt(previousDate - 1).limitToLast(10)

请注意,如果 2 个帖子具有相同的 date 值,您可能希望以不同方式处理此问题。

【讨论】:

  • 如果这是使用实时数据库完成的,则帖子将按照它们添加到路径的顺序返回,而不是创建帖子的时间。如果您订阅了一个新用户,所有帖子将被附加到列表的末尾,而不是按时间顺序。如果使用firestore,我会将所有帖子放在一个集合中(按时间顺序列出),然后如果用户订阅作者,则返回帖子。由于文档的大小限制,我认为最好将关注者列表保存为引用的子集合。当谈到 Firestore 时,我正在尝试...
  • 限制非规范化,因为 firestore 查询取决于返回的对象数量。
  • 从头开始......判断失误......我认为你可能有一些东西......我正在尝试限制非规范化..但你的方式可能是可行的,我会试试看.
猜你喜欢
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 2013-02-27
相关资源
最近更新 更多