【问题标题】:Firestore's hasPendingWrites() returns false on deleted documentFirestore 的 hasPendingWrites() 在已删除的文档上返回 false
【发布时间】:2019-07-19 22:29:59
【问题描述】:

我注册了一个监听器,它监听查询的变化。当一个文档被删除/删除时,它需要检查更改是否是本地的。如果更改是本地更改,则会显示一条消息。如果它不是本地的,则该对象将被删除。

问题是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;
    }
}

【问题讨论】:

标签: android firebase google-cloud-firestore listener


【解决方案1】:

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

当他们给我更多信息时,我会编辑这个答案。

【讨论】:

  • 这有什么结果吗?我刚碰到它。
  • 并非如此,我创建了一个解决方法来解决我遇到的问题。我刚刚向我的对象添加了一个布尔值,它跟踪更改是否是本地的。它不会写入 firestore,并在第一次调用侦听器时再次设置为 false。不是万无一失的,但似乎目前正在工作。 Firebase 支持的官方回答:由于这可以被视为一个问题,因此将根据分配的优先级和紧迫性将其添加到下一个开发周期。感谢您在此处所做的所有努力,并密切关注发行说明以获取更多更新。
  • 您介意分享您在 Firebase 中发现/提交的错误的链接吗?
  • @kmell96 我不介意,但是我已通过电子邮件提交了支持请求,该请求已升级为错误报告。所以我没有任何公开的信息。我搜索了一个错误跟踪器,但 Firebase 似乎没有。我找到的那个(issuetracker.google.com)没有任何关于我拥有的参考/案例编号的信息。我不认为这对 Google 有很高的优先级,因为关于这个问题的报道很少。
猜你喜欢
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 2020-01-04
  • 2018-04-26
  • 2021-04-02
  • 2023-03-24
  • 2021-12-31
相关资源
最近更新 更多