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



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

Admin添加/删除帖子。

有"主页"页,每页显示几篇文章,有"下一页"one_answers"上一页"按钮,还有一页显示一篇文章。

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

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

我在firebase.com上阅读文档,我在这里阅读帖子。"offset()"one_answers"count()"将在未来使用priority,为了知道项目的计数而不加载所有项目,使用额外的计数器。

基于此,我认为如下:

  • 添加POST动作:

    1. 获取post counter的值
    2. 设置新帖子数据的优先级等于帖子计数器的值
    3. 增加post counter的值
  • DELETE POST action

    1. 获取post数据的优先级值
    2. 查询优先级大于优先级的帖子数据,这些帖子数据将被删除并减少其值
    3. 帖子计数器减少值
  • GET POSTS FROM x TO y

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

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

还有别的办法吗?

提前感谢康斯坦丁

正如您所提到的,offset()将会出现,这会使您的工作更容易。

同时,与其组合使用startAt和endAt,不如组合使用startAt和limit来确保总是得到N个结果。这样,删除的项将被跳过。然后,您需要检查每个页面的最后一个id,然后再移动到下一个页面,以找到合适的id开始。

最新更新