我在移动应用程序上工作,该应用程序显示从服务器获取的数据流。最初,该应用程序获取包含10个项目的第一页。当用户向下滚动时,应用程序将使用下一个10项(换句话说 - 无限滚动)获取第二页。我遇到的问题是,当用户A获取页码X时,用户B可以在服务器上创建新内容,修改用户A可用的结果集。这意味着如果用户A尝试获取X +1页面,它将包含由新内容“推回”的上一个项目。怎么解决?我提出了两个解决方案,但我不知道哪个更好:
更新:
想象一下,我有一个表'queries',列'queries_id'(整数,主键),'date_created'(时间戳)。我的查询如下所示:select * from query order by date_created desc。 date_created date_created与主键递增的增量不一致。我使用Pageable对象使用Spring Data对数据进行分页。现在的问题是,如果创建新行并且它们的date_created比之前的最新行更新,那么它们会修改结果集。
答案 0 :(得分:0)
这是因为您仅根据date_created
进行分页
我假设您使用ORDER BY date_created DESC
进行查询,并为当前页面偏移
要避免您的问题,您需要在查询中添加上一次提取的最后一个ID。即queries_id < last_id ORDER BY date_created ....
等