在使用firebase.com作为数据库的应用程序中的分页

时间:2013-05-18 19:50:15

标签: firebase

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

管理员添加/删除帖子。

有“home”页面,每页显示几篇文章,其中“Next”和“Prev”按钮以及显示单篇文章的页面。

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

主要问题 - 如果使用firebase.com,是否可以实现此目的。

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

基于此,我想这个:

  • 添加POST操作:

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

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

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

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

还有别的办法吗?

提前致谢,康斯坦丁

1 个答案:

答案 0 :(得分:2)

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

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