google-cloud-firestore - 我可以在不取消订阅的情况下修改 QuerySnapshot 侦听器吗?
问题描述
假设我正在收听我bar
收藏中foo
小于 5 的所有项目。
let listener = db.collection("bar").where("foo", "<", 5).onSnapshot()
在一些用户输入之后,我实际上想收听foo
小于 7的所有项目。
我可以修改我的监听器而不取消订阅它吗?
我知道我可以这样做listener()
,然后使用设置一个新的侦听器.where("foo", "<", 7)
,但这意味着我将再次获取所有文档,因为这是侦听器的默认行为。我还可以使用设置第二个侦听器.where("foo", ">", 4).where("foo", "<", 7)
,然后合并结果。但是,如果用户不断更改标准,这将很快变得混乱。
是否有任何干净且可维护的解决方案?
解决方案
我可以在不取消订阅的情况下修改我的听众吗?
不,这是不可能的。您将需要取消订阅,创建一个新的 Query 对象,然后订阅该新对象。要么,要么订阅这两个查询并决定你想对任何重复的文档做什么。
推荐阅读
- ruby-on-rails - CarrierWave 未上传到 EC2 服务器
- algorithm - 获取电子表格上矩形区域的 A1Notation
- python - 比较分子列表的相似性
- tensorflow - 无法在 Ubuntu 16.04LTS 上通过 bazel 构建 tensorflow 1.4
- python - 如何在 Python 中跨两个不同进程共享数据
- javascript - 嵌套范围内的 JavaScript 变量在范围外不会出错
- php - 如何在会话消息中显示可验证的值?
- html - 溢出:滚动在我的响应式菜单上不起作用。该怎么办?
- find - 查找文件并更改权限,忽略目录
- sapui5 - SAPUI5 获取特定子账户的所有注册用户