Firestore的hasPendingWrites()对已删除的文档返回false

时间:2019-02-26 11:28:25

标签: android firebase google-cloud-firestore listener

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

对我来说,问题正在发生,我在 firebase 对象中使用了 updatedAt 属性。 看起来它是保留名称。 当我将其更改为 updateDate 时一切正常,并且我只收到一个 hasPendingWrites == true 的回调。