使用URL参数在firebase中对博客帖子进行数字分页的正确方法是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用URL参数在firebase中对博客帖子进行数字分页的正确方法是什么?相关的知识,希望对你有一定的参考价值。

我有一个基于React Redux并使用Firebase的博客应用程序。该博客有一个“查看所有帖子”页面,该页面仅限于每页显示10个帖子,并根据当前的ULR参数进行分页;也就是说,我有100个帖子,如果我当前的URL是“example.com/posts/page/7”,我需要按时间顺序发送用户帖子71到80。

我尝试过并且正在工作的是请求第一个(:urlParam * 10)博客帖子并在前端过滤结果。在前面的例子中,这意味着我GET请求了前80个帖子,而在React的渲染功能中,我只过滤了71到80之间的帖子。

这种做法显然效率低下,根本无法扩展。那么最有效的方法是什么?

我注意到在大多数firestore分页教程中,他们使用了例如我的示例中的70个帖子并请求接下来的10个帖子。在我的情况下,它不是一个很好的解决方案,因为用户可以任意跳转到任何页面而不会看到以前的页面。

答案

您不应该一次获取所有数据,这将是性能问题。而是仅请求向用户显示的帖子。

我们只需要在url中传递三个参数,如下所示,使它工作: -

1)pageId - 如果用户请求说71-80,则pageId将为7,pageSize为10

2)pageSize - 用户请求的项目数,例如 - 71-80是10项,

3)分页 - 如果分页为真,则将考虑pageId和pageSize,否则返回所有数据。

现在我们已经了解了属性,让我们讨论不同的情况:

1)我们需要前10个元素,pageId = 1和pageSize = 10

Request:-
apiUrl?PageSize=10&PageID=1&Pagination=true

Response:-
data: [...] // length 10
pageID: 1
pageSize: 10
totalPage: 262
totalSize: 2617

2)我们需要元素71-80,pageId = 7和pageSize = 10

    Request:-
apiUrl?PageSize=10&PageID=7&Pagination=true

Response:-
data: [...] // length 10
pageID: 7
pageSize: 10
totalPage: 262
totalSize: 2617

3)我们需要71 - 120,pageId = 7和pageSize = 50

Request:-
apiUrl?PageSize=50&PageID=7&Pagination=true

Response:-
data: [...] // length 50
pageID: 7
pageSize: 50
totalPage: 53
totalSize: 2617

希望有所帮助!!

以上是关于使用URL参数在firebase中对博客帖子进行数字分页的正确方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

在Django中对多个表进行筛选和排序

如何在 GatsbyJS 中对属于特定类别的帖子列表进行分页

Django 分页保留当前 URL 参数

东方财富爬虫url次数最大

如何在 shoudPerformSegueWithIdentifier 和 Firebase 中对用户进行身份验证?

Firebase 实时数据库能否有效地循环浏览数十亿条帖子并由发布它们的用户检索?