无限滚动可能会更改其顺序的集合

Infinite scrolling for a collection that may change its order

我正在尝试为存储在 MongoDB 集合中的文档实现无限滚动。每个文档都是一个餐厅,有一个数字字段 rating,所以我使用 rating 字段进行排序,并首先显示评分最高的餐厅。

问题是餐馆的集合不是静态的。餐厅的评分实时变化,因此集合中餐厅的顺序不断变化。结果,虽然正式有了sorting key,但是意义不大

我正在考虑问题的 2 个解决方案:

  1. 接受在某人进行无限滚动时餐厅的顺序可能会略有变化的事实。让前端负责消除可能的重复项。接受一些餐馆在滚动过程中可能根本不会出现的事实。但这看起来更像是解决问题而不是解决问题。
  2. 仅对餐厅集合的静态副本执行无限滚动。使用评级更新定期(例如,每天一次)更新静态副本。但这种方法似乎设计过度了。此外,当餐厅的静态副本更新为新评级时,无限滚动会发生什么情况?这样的滚动也会被破坏,因为更改顺序的问题仍然存在,顺序不会经常更改。

我相信我不是第一个遇到这个问题的人。毕竟,有很多无限滚动实现的例子,比如 Facebook 或 Instagram 提要。同时,到目前为止我阅读的所有文章似乎都过于肤浅,只涵盖了无限滚动静态集合的情况。

对于可能随时更改其顺序的集合,处理无限滚动的正确方法是什么?

谢谢。

通常实现的无限滚动并不是一种精确的导航方法。谁是您的用户?

  • 高级用户可能会讨厌它(我在 github、facebook 等网站上讨厌它)因此不会过多地使用它。
  • 非高级用户无法判断数据丢失。如果他们碰巧正在寻找一家特定的餐馆,但它消失了,告诉他们重新加载页面对大多数人来说就足够了。
  • 抓取您的数据的用户将在请求获取您的所有数据之间没有延迟地执行此操作。

当您两次展示同一家餐厅时,人们会注意到,因此请在前端检查这些情况。

你也可以考虑做一个高精度的评分字段来排序。例如,如果通常您的 UI 显示整数评级,请保留计算期间使用的浮点评级并按其排序。这将产生更稳定的排序。