首页 > 解决方案 > 从数据库中获取评论时重复元素

问题描述

我最近正在实施分页(Django Rest Framework - PageNumberPagination)。但是,我很快遇到了一个问题。你能帮我吗?

comments_list = CommentModel.objects.filter(blog=blog).order_by('-createdAt')

TL;博士; => 鉴于,我已经写了一篇文章并且多人可以添加评论 什么时候,他们写评论然后,我怎样才能确保,我没有显示重复的结果?

分页的当前实现:API:“每个页面包含 N 个项目。告诉我你想要什么页码?” path/to/api/?page=N

前端:“以 Page = 1 开始,成功响应后,将其递增一。”

说明:说这些是我的评论 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

我想在“最新”->“最旧”中显示它们 [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

每页有 N = 10 个结果。 [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, | 1] 其中,“|” => 第 1 页。

我添加了一个新的评论C1

因此后端数组变为 =>[C1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

分裂变成=>[C1, 11, 10, 9, 8, 7, 6, 5, 4, 3, | 2, 1]

但是,我的前端还不知道,因此当它请求第 2 页时,

列表变为 =>[C1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2] + [2, 1] => [C1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2 ,1]

因此,创建一个显示在前端的重复条目。

(刷新后它会消失,直到其他人同时选择添加评论)

知道如何解决吗?

标签: pythondjango-rest-frameworknuxt.js

解决方案


Cursor Pagination是这里的关键。


推荐阅读