我在Firestore中有一个不断更新的集合,因此有一个很多的文档。
现在,我希望附加一个集合快照侦听器,以便每当有新数据时,只有当有新数据时才触发事件。
我试过
CollectionReference reference = firestore.collection("table");
reference.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable snapshots, @Nullable FirebaseFirestoreException exception) {
List<DocumentChange> documentChanges = (snapshots == null) ?
new ArrayList<DocumentChange>() : snapshots.getDocumentChanges();
for (DocumentChange document: documentChanges) {
DocumentSnapshot snapshot = document.getDocument();
DocumentChange.Type documentType = document.getType();
if (documentType == Document.Type.ADDED) {
Log.d("Notice", "Document added");
}
}
}
});
但它有每个文档,并且在某一时刻甚至因为文档而崩溃了应用程序。很多。
任何人都可以帮我解决这个问题。为了清楚起见,我想附加一个文档监听器并仅在附加快照监听器之后监听文档更新
答案 0 :(得分:0)
集合或查询上的快照侦听器将始终最初返回整个匹配文档集。它们将存储在内存中,直到删除侦听器。没有办法改变这种行为。
相反,请考虑以这样一种方式对数据建模,使您能够仅查询当前文档,可能使用日期类型字段,并仅查询日期> gt的文档。现在的时间。
另请注意,您可以使用云功能仅为新添加的文档提供一些后端代码触发器。