如何实现 Firestore 以便用户可以对数组中的项目进行排序并同步排序顺序?例如,在待办事项列表中订购项目。
我可以想出两种选择。但他们感觉不是好主意..
在指定索引处插入项目。但我不确定如何或是否可以使用 Firestore 做到这一点?
每次添加新项目或“移动”项目时,都会将新的 sortKey 值映射到每个项目,然后更新所有项目。我也许可以用 .batch 做到这一点,但感觉效率非常低?
一定有更好的方法! 😀
使用 Firebase 实时数据库更容易吗?
最佳答案
我建议您在文档中添加一个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
关于firebase - 可编辑的同步排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48913086/