收藏
回答

后端通过skip和limit数据分页,如果数据源发生新增或者删除,如何确保分页数据是实时最新的?

我是通过collection的aggregate.sort() skip()和limit()相结合进行数据分页的,如果分页过程中数据源发生新增或者删除,此时怎么处理才能保证前端查看的数据是最新的?或者分页数据不被打乱

最后一次编辑于  2023-06-25
回答关注问题邀请回答
收藏

3 个回答

  • 陈宇明
    陈宇明
    2023-07-06

    从业务上来说我觉得没必要实时,这种场景很少,再说用户进入删除的详情再提示用户该商品已下架,这个也能接受呀

    2023-07-06
    有用
    回复
  • showms
    showms
    2023-06-25

    这就需要根据你的id排序,然后每次查询时都带上上一页最小(或者最大的id,取决于你的排序方式)

    2023-06-25
    有用
    回复 1
    • 一路向北
      一路向北
      2023-06-25
      我这边类似商城,数据量比较大,而且价格是实时更新的,有各种排序的需求,分页推送又容易乱。想不出好办法
      2023-06-25
      回复
  • Ding
    Ding
    2023-06-25

    如果是按照 id 等唯一字段排序(或者创建时间这种近乎唯一的字段),可以先定位偏移位置的值,查询比该值大或者小的数据集,即可保证分页数据不被打乱。该字段最好有索引,以保证查询速度。

    不太明白你所说的“前段查看的数据是最新的”是什么意思?

    是指新插入的数据,在后续请求下一页时也要出现吗。如果是这样,那不太可能,这样就会忽略掉 sort 排序条件。


    2023-06-25
    有用
    回复 6
    • 一路向北
      一路向北
      2023-06-25
      是按照非主键进行sort排序的,这种如何保证每页数据不乱?
      非主键进行sort排序的,新插入的数据会显示吗?
      2023-06-25
      回复
    • Ding
      Ding
      2023-06-25回复一路向北
      如果这个字段是值唯一的,而且当新插入的数据是在当前的后一页时,是能够保证数据不乱而且能及时拉取到新插入的数据。否则不可以。 如果你要的是实时更新前端数据,可以使用"实时数据推送"
      2023-06-25
      回复
    • 一路向北
      一路向北
      2023-06-25
      “实时数据推送”做不到大数据量的推送吧,我这边类似商城,数据量比较大,而且价格是实时更新的,有各种排序的需求,分页推送又容易乱。想不出好办法
      2023-06-25
      回复
    • 一路向北
      一路向北
      2023-06-25
      个人觉得只能是按照 id 排序来进行分页,包括美团在内的公司对于多维度排序的处理也只是将主要纬度的数据分别建表,按各个纬度的 id 进行排序分页-----我从其他地方扒的方案,也是一种方法
      2023-06-25
      回复
    • Ding
      Ding
      2023-06-26回复一路向北
      这样是可以的,带来的新问题是会非常复杂,而且云开发也很难保证你的数据一致。我不太清楚你们的业务是什么,所以有疑惑为什么需要那么严格的保证顺序。一般来说,前端列表中个别的错乱和重复是可以接受的。
      2023-06-26
      回复
    查看更多(1)
登录 后发表内容