我已经注册了一个侦听器,用于侦听查询的更改。删除/删除文档后,它需要检查更改是否是本地的。如果更改是本地更改,则会显示一条消息。如果不是本地对象,则仅删除该对象。
问题在于,在侦听器中检查时,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;
}
}
答案 0 :(得分:1)
对于每个遇到我同样问题的人(看着视图,几乎没有人),Firebase正在研究它,看来这只是仅在某些设备和模拟器上存在的错误。他们不太确定它是从哪里来的,而是试图找出来。
当他们给我更多信息时,我将编辑此答案。
答案 1 :(得分:0)
对我来说,问题正在发生,我在 firebase 对象中使用了 updatedAt
属性。
看起来它是保留名称。
当我将其更改为 updateDate
时一切正常,并且我只收到一个 hasPendingWrites
== true 的回调。