如何在不知道项目索引的情况下在队列中重新排序项目



我有一个firebase数据库,其中一个名为 queue的集合,其文档是队列中的项目。我需要订购它们(FIFO(,但也需要能够在必要时将它们提升为队列中的任意金额。他们不能将它们订购在数据库中。这个问题的答案对我有帮助。但是,这是您知道哪些项目在哪个位置。这是给出的解决方案:

具有文档中具有浮点值的position字段。查询按位置排序的收集。然后:

  1. 将项目放在最后,给它一个lastItem.position + 100的位置
  2. 将项目移动时,将position设置为(prev.position + next.position) / 2.0,即预见和下一个新位置。
  3. 将物品移至行的头部时,firstItem.position / 2.0

,例如

A: 100                   C:  50                    C:  50
B: 200                   A: 100 -> move below B    B: 200
C: 300 -> move to top    B: 200                    A: 300
D: 400                   D: 400                    D: 400

我如何做一个举动,例如"向两个地方移动"不知道B在我想将其移动到的地方吗?我不想对整个集合进行分类才能移动它,因为那是效率低下的。

如果要更改项目的位置相对,则需要知道这些项目的索引。如果您没有允许您了解其索引的先验知识,则需要将所有项目加载到您正在修改的范围内。据我所知,这里没有任何API快捷方式。

最新更新