我如何实现Firestore,以便用户可以对数组中的项进行排序,并且排序顺序是否已同步?例如Todo列表中的订单商品。
我可以提出两种选择。但他们感觉不是好主意..
在指定的索引处插入项目。但我不确定如何或者如果你能用Firestore做到这一点?
每次添加新项目或“移动”项目时,都会将新的sortKey值映射到每个项目,然后更新所有项目。我可能能够用.batch这样做,但感觉超级低效?
一定有更好的方法!
使用firebase实时数据库更容易吗?
答案 0 :(得分:3)
我建议您在文档中设置一个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