我已经注册了一个侦听器,用于侦听查询的更改。删除/删除文档后,它需要检查更改是否是本地的。如果更改是本地更改,则会显示一条消息。如果不是本地对象,则仅删除该对象。

问题在于,在侦听器中检查时,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;
    }
}

最佳答案

对于遇到与我相同的问题的每个人(看着视图,几乎没有人),Firebase正在研究它,看来这只是在某些设备和模拟器上存在的错误。他们不太确定它的来源,但试图找出答案。

当他们给我更多信息时,我将编辑此答案。

08-18 07:11