实时更新仅返回已更改的文档而不是整个查询

时间:2018-03-12 20:29:25

标签: android google-cloud-firestore

我正在使用Firestore实时更新,我有以下监听器

 CollectionReference collecRef = db.collection("lists").document("doc1").collection("locations");
changesListener=collecRef.addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@Nullable QuerySnapshot snapshots,
                                @Nullable FirebaseFirestoreException e) {
            if (e != null) {
                Log.w(TAG, "listen:error", e);
                return;
            }
            a
            for (DocumentChange dc : snapshots.getDocumentChanges()) 
            {
                DocumentSnapshot document = dc.getDocument();
             // this is where I expected to loop over all documents. But instead it is only one item..the changed the document

            }

        }
    });

根据文件:

  

查看查询结果的实际更改通常很有用   查询快照,而不是简单地使用整个查询快照。

这意味着当文档被修改时,我期望整个查询重新运行,因为结果发生了变化。但是,在监听器中,我只获得已更改的文档的文档快照,而不是所有整个查询结果(即我的所有文档)

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:2)

如果您致电snapshots.getDocumentChanges(),则只能获得已更改的文件。如果您想获取所有文件,请致电QuerySnapshot.getDocuments()

for (Document document : snapshots.getDocuments()) {
    ... do something with document ...