flutter - Flutter Firestore 监听文档修改
问题描述
我正在检查 Flutter firestore依赖项,想知道如何才能仅获取新添加或修改的文档?
我不确定代码是否会先返回集合中的所有快照'abc'
,然后过滤修改过的快照?
因为如果它返回所有快照并且我的集合有 100 万个快照并且只有 1 个被修改,那么我的代码最终将读取所有 100 万个快照以获取那 1 个修改过的快照。
Firestore.instance.collection('abc').snapshots().listen((data){
data.forEach((change) {
if(change.type == DocumentChangeType.Modified) {
}
})
})
解决方案
查询的侦听器(没有过滤器的集合仍然是查询)将始终在第一个回调中将整个结果集作为“添加”文档接收。以后对这些文档的更改将显示为对这些文档的修改。
因此,如果您的集合中有 100 万个文档,则此查询将尝试读取整个集合,这可能不是您想要的。您将需要一种使用 where 子句过滤集合的方法。考虑在每个文档中存储一个时间戳,如果您只想随着时间的推移进行增量更新,则只查询该时间戳之后的文档。
推荐阅读
- php - 如何访问laravel中数组内的集合内的属性
- apache-spark - 星火投射默认值
- javascript - 获取Scope中某个字段的引用表
- asp.net - 如何在 asp.net core 2.0 中为区域生成单独的 DLL/aseembly 文件?
- amazon-web-services - 使用秘密管理器的 AWS lambda 函数
- json - 如何以特定格式将 Excel 导出为 JSON
- java - 如何为多个java文件和资源创建一个可执行文件?
- wkwebview - WKWebView Swift - 获取 javascript 的 Console.log
- jenkins - Jenkins 工作目录在哪里?
- lua - 如何理解 lua 中的表?