如何处理删除基于光标的分页中的先前元素?

Posted

技术标签:

【中文标题】如何处理删除基于光标的分页中的先前元素?【英文标题】:How to handle removal of previous elements in cursor based pagination? 【发布时间】:2020-07-30 09:33:22 【问题描述】:

假设我有以下对象列表:

[id: 1, id: 2, id: 3, id: 4]

为了简单起见,假设我想在每页显示 2 个元素。

我可以通过提供以下参数来查询第一页:myQuery(first: 2) 第二页使用第一页的endCursor(即id2):myQuery(first:2, after:2)

现在假设我在第二页,id 为 2 的元素被删除。我想移动到上一页,通过执行:myQuery(last:2, before:3) 这将导致第一页只有一个元素(id 为 1 的元素),这对我来说似乎是一种糟糕的用户体验。

基于光标的分页是否不太适合偏移分页,或者您如何处理?我唯一能想到的就是不重新获取数据。在这种情况下,用户仍然会认为 ID 为 2 的对象在那里。

【问题讨论】:

【参考方案1】:

这不是一个聪明的问题。最简单的解决方案是在第一页使用myQuery(first: 2)。因为我总是知道状态,我在哪一页。

【讨论】:

以上是关于如何处理删除基于光标的分页中的先前元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理thinkphp很多分页中:比如我现在要点击第二页修改数据,修改完了仍然返回二页,而不是第一页,

Spring中的分页

当用户操作可以删除中间的行时,如何处理数据库分页?

在使用 graphql 缓存的基于游标的分页中跟踪页码

Flask-SQLAlchemy中的分页操作

如何处理 React / Flux 组件中的状态转换