首页 > 解决方案 > Flutter Firestore 监听文档修改

问题描述

我正在检查 Flutter firestore依赖项,想知道如何才能仅获取新添加或修改的文档?

我不确定代码是否会先返回集合中的所有快照'abc',然后过滤修改过的快照?

因为如果它返回所有快照并且我的集合有 100 万个快照并且只有 1 个被修改,那么我的代码最终将读取所有 100 万个快照以获取那 1 个修改过的快照。

Firestore.instance.collection('abc').snapshots().listen((data){
    data.forEach((change) {
       if(change.type == DocumentChangeType.Modified) {
       }
    })
})

标签: fluttergoogle-cloud-firestore

解决方案


查询的侦听器(没有过滤器的集合仍然是查询)将始终在第一个回调中将整个结果集作为“添加”文档接收。以后对这些文档的更改将显示为对这些文档的修改。

因此,如果您的集合中有 100 万个文档,则此查询将尝试读取整个集合,这可能不是您想要的。您将需要一种使用 where 子句过滤集合的方法。考虑在每个文档中存储一个时间戳,如果您只想随着时间的推移进行增量更新,则只查询该时间戳之后的文档。


推荐阅读