firebase - 可编辑的同步排序顺序

标签 firebase firebase-realtime-database google-cloud-firestore

如何实现 Firestore 以便用户可以对数组中的项目进行排序并同步排序顺序?例如,在待办事项列表中订购项目。

我可以想出两种选择。但他们感觉不是好主意..

  1. 在指定索引处插入项目。但我不确定如何或是否可以使用 Firestore 做到这一点?

  2. 每次添加新项目或“移动”项目时,都会将新的 sortKey 值映射到每个项目,然后更新所有项目。我也许可以用 .batch 做到这一点,但感觉效率非常低?

一定有更好的方法! 😀

使用 Firebase 实时数据库更容易吗?

最佳答案

我建议您在文档中添加一个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

关于firebase - 可编辑的同步排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48913086/

相关文章:

java.lang.Long 不能转换为 java.lang.Integer

java - 如何遍历数据库中的子项并将它们应用于变量

java - 无法在Android中同一类中的方法之间传递值

java.lang.UnsupportedOperationException 错误 ArrayAdapter

javascript - 如何为 SA 的预定功能编写自定义时区

javascript - 如何将以前的时间戳保存到 Firebase FireStore

javascript - 使用 Firebase 在 AngularJS 简单应用程序中出现错误

swift - Xcode TabBar Controller 注销问题

firebase - 按对象查询 Firestore 集合

java - 从另一个类中获取值(value)