[英]Optimize firestore querysnapshot listener for read in android
[英]Differentate between first time querysnapshot and change listener in firestore
仔细查看您引用的文档中的代码。 它正在检查QuerySnapshot对象中每个DocumentChange对象的类型 :
for (DocumentChange dc : snapshots.getDocumentChanges()) {
switch (dc.getType()) {
case ADDED:
Log.d(TAG, "New city: " + dc.getDocument().getData());
break;
case MODIFIED:
Log.d(TAG, "Modified city: " + dc.getDocument().getData());
break;
case REMOVED:
Log.d(TAG, "Removed city: " + dc.getDocument().getData());
break;
}
}
这与您引用的文字一致:
第一个查询快照包含与查询匹配的所有现有文档的已添加事件。
您可以判断您是否第一次看到文档,因为它是一种ADDED类型的更改。 MODIFIED和REMOVED类型更改仅针对您之前为此侦听器看到的文档发出。
// flag let flag = false; collectionRef.onSnapshot((snapshot) => { snapshot.docChanges().forEach((change) => { // NOTE: ctrl first execute if (!flag) { console.log('not initilized'); return; } // anything console.log('only after initilized'); }, (err) => { console.log(err); }); // set flag true if (!flag) { flag = true console.log('listener initilized!!'); }; });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.