假设我正在听bar
集合中foo
小于5的所有项目。
let listener = db.collection("bar").where("foo", "<", 5).onSnapshot()
在输入一些用户信息之后,我实际上想收听foo
小于7的所有项目。
是否可以在不取消订阅的情况下修改监听器?
我知道我可以做listener()
,然后使用.where("foo", "<", 7)
设置新的侦听器,但这意味着我将再次获取所有文档,因为那是侦听器的默认行为。我还可以使用.where("foo", ">", 4).where("foo", "<", 7)
设置第二个侦听器,然后合并结果。但是,如果用户不断更改条件,那将很快变得混乱。
是否有任何清洁且可维护的解决方案?
答案 0 :(得分:1)
我可以在不取消订阅的情况下修改我的监听器吗?
否,不可能。您将需要取消订阅,创建一个新的Query对象,然后订阅该新对象。要么订阅这两个查询,然后决定对任何重复的文档要做什么。