我有一个用于这样的查询的快照侦听器:
firestore
.collection("...")
.whereEqualTo("available", true)
.orderBy("sort", Query.Direction.DESCENDING)
.limit(10)
监听器在以下条件下触发“REMOVE”事件:
当用户在 UI 中单击删除时,我们将“available”字段更新为 false,从而触发“REMOVE”事件。
当查询返回 10 个项目并且用户添加一个时,最后一个项目将被删除,因为新添加的项目现在位于索引 0,这也会触发最后一个项目的“REMOVE”事件。
我的问题是如何区分“REMOVE”事件背后的原因? (知道事件附带的数据是OLD数据)
我当前的解决方案是使用 docId 启动 Firestore.get() 来获取新数据并进行适当的更改。
谢谢!
API 中没有具体信息来区分这两种情况:它只是告诉您文档快照不再是查询的一部分。
如果你确实需要知道文档是否被删除,阅读它确实是一个有效的方法。另一种方法是将查询的限制提高一个,因此请求 11 个项目,但只显示其中的 10 个。这样,如果文档 10 没有被删除,它仍然会作为编号 11 出现在结果中 - 用户只是看不到它。