时间倒序分页查询,翻页中有新增的数据插入db,导致返回重复数据,这个有什么好的解决办法没?谢谢大家
时间倒序分页查询,翻页中有新增的数据插入db,导致重复数据,这个有什么好的解决办法没?谢谢大家
回复内容:
时间倒序分页查询,翻页中有新增的数据插入db,导致重复数据,这个有什么好的解决办法没?谢谢大家
你说的数据重复是这样么,在翻页的过程中,有人插入了一条数据,然后第一页的最后一条数据被再次分配到了第二页,变成了第二页的第一条输出,这条数据出现了两次?
如果是这个意思的话,我建议你分页在客户端做,查询的时候加个时间点,小于点击查询按钮的时间的数据会被查出来,然后在客户端进行分页,这样有新数据也不会影响分页,因为新数据根本没有取回来。由于你这个是时间倒叙,所以即使有新数据也不会被看到,不会产生数据遗漏。在数据再次加载的时候,再去取数据,新数据就会被查询出来。
前段时间刚处理了移动端类似的问题,说下移动端的思路:
1,首先是分为向下拉(获取最新数据)和向上滑(获取之前数据)
2,其次在每次向上滑获取之前数据时,我都会传一个id,通过这个id做为条件获取数据。你是时间倒序,那基本可以认定id也是倒序,刚刚传的id应该是之前获取数据中最小的id,除第一次外,以后每次获取数据都是小于这个id的数据
3,第一次获取数据的时候,因为没有id,所以按顺序获取最前的数据即可。
希望对你的问题有帮助!
不好意思竟然是世界上最好的语言。
而我回答是基于nodejs的。
不过不影响,理解思路就好。
-------原答案------
我在看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
上一篇: CodeIgniter中分页显示效果显示怎么怎么实现
下一篇: shell随机写入指定文件