在Firestore

时间:2018-04-20 14:06:44

标签: java android firebase google-cloud-firestore

我在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");
            }
        }
    }
});

但它有每个文档,并且在某一时刻甚至因为文档而崩溃了应用程序。很多。

任何人都可以帮我解决这个问题。为了清楚起见,我想附加一个文档监听器并仅在附加快照监听器之后监听文档更新

1 个答案:

答案 0 :(得分:0)

集合或查询上的快照侦听器将始终最初返回整个匹配文档集。它们将存储在内存中,直到删除侦听器。没有办法改变这种行为。

相反,请考虑以这样一种方式对数据建模,使您能够仅查询当前文档,可能使用日期类型字段,并仅查询日期> gt的文档。现在的时间。

另请注意,您可以使用云功能仅为新添加的文档提供一些后端代码触发器。