我正在检查Flutter的 firestore 依赖关系,想知道如何才能只获得新添加或修改的文档?
我不确定代码是否先返回集合'abc'
中的所有快照,然后过滤修改后的快照?
因为如果它返回了所有快照,而我的集合中有100万个快照并且仅修改了1个,那么我的代码最终将读取所有100万个快照,以得到1个被修改的快照。
Firestore.instance.collection('abc').snapshots().listen((data){
data.forEach((change) {
if(change.type == DocumentChangeType.Modified) {
}
})
})
答案 0 :(得分:0)
查询(没有过滤器的集合仍然是查询)上的侦听器将始终在第一个回调中以“添加”文档的形式接收整个结果集。以后对这些文档所做的更改将显示为对这些文档的修改。
因此,如果您的收藏集中有100万个文档,则此查询将尝试读取整个集合,而这可能不是您想要的。您将需要一种使用where子句过滤集合的方法。考虑只在每个文档中存储一个时间戳,如果只想随时间推移进行增量更新,请仅查询该时间戳之后的文档。