区分查询中的 Firestore 快照侦听器“REMOVE”事件原因

问题描述 投票:0回答:1

我有一个用于这样的查询的快照侦听器:

firestore
    .collection("...")
    .whereEqualTo("available", true)
    .orderBy("sort", Query.Direction.DESCENDING) 
    .limit(10)

监听器在以下条件下触发“REMOVE”事件:

  1. 当用户在 UI 中单击删除时,我们将“available”字段更新为 false,从而触发“REMOVE”事件。

  2. 当查询返回 10 个项目并且用户添加一个时,最后一个项目将被删除,因为新添加的项目现在位于索引 0,这也会触发最后一个项目的“REMOVE”事件。

我的问题是如何区分“REMOVE”事件背后的原因? (知道事件附带的数据是OLD数据)

我当前的解决方案是使用 docId 启动 Firestore.get() 来获取新数据并进行适当的更改。

谢谢!

firebase kotlin google-cloud-firestore
1个回答
0
投票

API 中没有具体信息来区分这两种情况:它只是告诉您文档快照不再是查询的一部分。

如果你确实需要知道文档是否被删除,阅读它确实是一个有效的方法。另一种方法是将查询的限制提高一个,因此请求 11 个项目,但只显示其中的 10 个。这样,如果文档 10 没有被删除,它仍然会作为编号 11 出现在结果中 - 用户只是看不到它。

© www.soinside.com 2019 - 2024. All rights reserved.