代码之家  ›  专栏  ›  技术社区  ›  Jad Ghadry

Firebase.observeSingleEvent(of:with:)方法正在检索缓存/旧数据[重复]

  •  0
  • Jad Ghadry  · 技术社区  · 6 年前

    [免责声明]在我自己努力解决这个问题之后,我亲自发布并回答了这个问题,并注意到许多人仍然这样做

    我正在开发一个iOS移动应用程序,为了这个特定的项目,我决定使用 作为我的后端基础设施。


    问题

    .observeSingleEvent(of:with:) 方法时,我总是发现自己检索缓存或旧数据,而不是新更新的数据。

    在某些情况下,连续调用该方法两次将检索所需的服务器数据 .


    尝试

    1. 使用 .keepSynced(true) Firebase documentation

      在这些位置自动下载数据并保持同步,即使引用没有活动的侦听器

    1 回复  |  直到 6 年前
        1
  •  1
  •   Jad Ghadry    6 年前

    概述

    浏览文档时,您注意到从 进入你的iOS移动应用程序

    1. .observe(_:with:) 根据 Firebase Documentation ,连续侦听特定节点上的更改,并在后者每次更改数据时触发回调。

      snapshot 包含该位置的所有数据,包括子数据。如果没有数据,快照将返回 false exists() nil 当你读到它的时候 value

    2. 这个 .observeSingleEvent(of:with:) Firebase文档 ,只调用一次。

      observeSingleEventOfType 方法来简化此场景,[其中]事件回调[被触发]一次,然后不再触发。


    问题

    .observeSingleEvent(of:with:) .keepSynced(true) 在相关的数据库参考,但徒劳无功。你选择了 方法,一切都开始完美地工作。


    解决方案

    如果您有无效的数据库安全规则

    假设您正在尝试同步 myRef 允许从此数据库引用中读取 ".read" = true" .

    The key to firebase security - Google I/O 2016