我注册了一个侦听器,用于侦听对查询的更改。当一个文档被移除/删除时,它需要检查更改是否是本地的。如果更改是本地更改,则会显示一条消息。如果它不是本地的,则该对象将被删除。
问题是在侦听器中签入时hasPendingWrites()返回false。这是为什么?根据 Firestore 文档,这应该是true第一次,因为在更改本地缓存时会立即触发侦听器。
AsyncArrayHandler 的简化代码,在监听器激活时调用:
for (DocumentChange documentChange : queryDocumentSnapshots.getDocumentChanges())
{
changeIsMadeLocal = documentChange.getDocument().getMetadata().hasPendingWrites();
switch (documentChange.getType())
{
case REMOVED:
if (changeIsMadeLocal)
{
//do stuff here
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)