时间倒序分页查询,翻页中有新增的数据插入db,导致返回重复数据,这个有什么好的解决办法没?谢谢大家

php中文网
发布: 2016-08-04 09:22:14
原创
3731人浏览过

时间倒序分页查询,翻页中有新增的数据插入db,导致重复数据,这个有什么好的解决办法没?谢谢大家

回复内容:

时间倒序分页查询,翻页中有新增的数据插入db,导致重复数据,这个有什么好的解决办法没?谢谢大家

你说的数据重复是这样么,在翻页的过程中,有人插入了一条数据,然后第一页的最后一条数据被再次分配到了第二页,变成了第二页的第一条输出,这条数据出现了两次?
如果是这个意思的话,我建议你分页在客户端做,查询的时候加个时间点,小于点击查询按钮的时间的数据会被查出来,然后在客户端进行分页,这样有新数据也不会影响分页,因为新数据根本没有取回来。由于你这个是时间倒叙,所以即使有新数据也不会被看到,不会产生数据遗漏。在数据再次加载的时候,再去取数据,新数据就会被查询出来。

前段时间刚处理了移动端类似的问题,说下移动端的思路:
1,首先是分为向下拉(获取最新数据)和向上滑(获取之前数据)
2,其次在每次向上滑获取之前数据时,我都会传一个id,通过这个id做为条件获取数据。你是时间倒序,那基本可以认定id也是倒序,刚刚传的id应该是之前获取数据中最小的id,除第一次外,以后每次获取数据都是小于这个id的数据
3,第一次获取数据的时候,因为没有id,所以按顺序获取最前的数据即可。

希望对你的问题有帮助!

不好意思竟然是世界上最好的语言。
而我回答是基于nodejs的。
不过不影响,理解思路就好。

-------原答案------

有道翻译AI助手
有道翻译AI助手

有道翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译、网页翻译、文档翻译、PDF翻

有道翻译AI助手 63
查看详情 有道翻译AI助手

我在看coding.net的api的时候发现他有两种more的方式。
语法基于mongoose
一是通过分页,pagify。比如一页20的话,Model.find(query).skip(page*20 - 20).limit(20)。
二是用过加载更多,具体来说就是after。我没开发过这样的,不确定mongodb有没有after这样的属性。不过依托于一个sort里的东西的话,还是比较简单的,Model.find(query).sort('-time').where({time:{$gt:TIME}}).limit(20)

不确定有没有

如果mongodb有类似于after的话,那就更好了。(笔记time可能会撞车,而id不会)
Model.find(query).sort('-time').after({id:ID}).limit(20)

补充coding.net中加载更多的请求api

GET https://coding.net/api/activities/projects_last?last_id=14959187

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号