可编辑的同步排序顺序

tob*_*bbe 2 firebase firebase-realtime-database google-cloud-firestore

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

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

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

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

一定会有更好的办法!

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

Mic*_*igh 5

我建议在文档中设置一个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
Run Code Online (Sandbox Code Playgroud)