1

前端应用程序将使用 firebase.com 作为数据库。应用程序应该像博客一样工作:

管理员添加/删除帖子。

有“主页”页面,每页显示几篇文章,带有“下一个”和“上一个”按钮,页面显示单个文章。

我也需要深度链接。即当用户输入 URL http://mysite.com/page/2/我需要该应用程序显示最后的文章从 10 到 20,当用户输入 URL http://mysite.com/page/20/应用程序显示最后的文章200 到 210。通常的分页。

主要问题 - 如果使用 firebase.com,是否有可能实现这一目标。

我在 firebase.com 上阅读了文档,我在这里阅读了帖子。"offset()" 和 "count()" 将在未来使用优先级,以便了解项目的数量并且不加载所有项目使用额外的计数器。

基于此,我认为:

  • 添加 POST 操作:

    1. 获取帖子计数器的值
    2. 为新帖子数据设置优先级等于帖子计数器的值
    3. 增加帖子计数器的值
  • 删除帖子操作

    1. 获取发布数据的优先级值
    2. 查询优先级值大于优先级的帖子数据,查询将被删除并减少其值的帖子数据
    3. 减少帖子计数器的值
  • 从 x 到 y 获取帖子

    1. postsRef.startAt(null, x).endAt(null, y).on(... 等等)

这样不喜欢的东西是针对DELETE POST的动作。因为帖子的索引将从 0 到无穷大,优先级较低的帖子被认为是较早创建的帖子,所以如果我有 100000000 个帖子并且如果我需要删除第一个帖子,那么我需要加载 99999999 下一个帖子的数据并更新它们优先级(索引)。

还有其他方法吗?

在此先感谢,康斯坦丁

4

1 回答 1

2

正如您所提到的,offset() 即将到来,这使您的工作更轻松。

同时,您可以组合使用 startAt 和 limit 来确保始终获得 N 个结果,而不是组合使用 startAt 和 endAt。这样,将跳过已删除的项目。然后,您需要检查每个页面的最后一个 id,然后再转到下一个以找到正确的 id 开始。

于 2013-05-20T16:08:17.400 回答