我正在使用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
}
}
});
根据文件:
查看查询结果的实际更改通常很有用 查询快照,而不是简单地使用整个查询快照。
这意味着当文档被修改时,我期望整个查询重新运行,因为结果发生了变化。但是,在监听器中,我只获得已更改的文档的文档快照,而不是所有整个查询结果(即我的所有文档)
我在这里错过了什么吗?
答案 0 :(得分:2)
如果您致电snapshots.getDocumentChanges()
,则只能获得已更改的文件。如果您想获取所有文件,请致电QuerySnapshot.getDocuments()
。
for (Document document : snapshots.getDocuments()) {
... do something with document ...