我有一个firebase数据库,其中一个名为 queue
的集合,其文档是队列中的项目。我需要订购它们(FIFO(,但也需要能够在必要时将它们提升为队列中的任意金额。他们不能将它们订购在数据库中。这个问题的答案对我有帮助。但是,这是您知道哪些项目在哪个位置。这是给出的解决方案:
具有文档中具有浮点值的
position
字段。查询按位置排序的收集。然后:
- 将项目放在最后,给它一个
lastItem.position + 100
的位置- 将项目移动时,将
position
设置为(prev.position + next.position) / 2.0
,即预见和下一个新位置。- 将物品移至行的头部时,
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快捷方式。