是否可以在不取消订阅的情况下修改QuerySnapshot侦听器?

时间:2020-10-15 15:17:20

标签: google-cloud-firestore

假设我正在听bar集合中foo小于5的所有项目。

let listener = db.collection("bar").where("foo", "<", 5).onSnapshot()

在输入一些用户信息之后,我实际上想收听foo小于7的所有项目。
是否可以在不取消订阅的情况下修改监听器?

我知道我可以做listener(),然后使用.where("foo", "<", 7)设置新的侦听器,但这意味着我将再次获取所有文档,因为那是侦听器的默认行为。我还可以使用.where("foo", ">", 4).where("foo", "<", 7)设置第二个侦听器,然后合并结果。但是,如果用户不断更改条件,那将很快变得混乱。

是否有任何清洁且可维护的解决方案?

1 个答案:

答案 0 :(得分:1)

我可以在不取消订阅的情况下修改我的监听器吗?

否,不可能。您将需要取消订阅,创建一个新的Query对象,然后订阅该新对象。要么订阅这两个查询,然后决定对任何重复的文档要做什么。