【问题标题】:How to update latest entry from Firebase-Database tree?如何更新 Firebase-Database 树中的最新条目?
【发布时间】:2018-06-08 18:00:09
【问题描述】:

我想更新(或同步)我 Firebase 数据库中树的最新条目。

结构如下:

我只想观察最新条目,而不是像“EventTypeChildAdded”那样获取所有条目。
但是,我真的很想观察最新的条目,所以我想在有新的“最新”条目时调用一个函数,所以当一个孩子被添加时。

我已经找到了这段代码。

(DatabaseRef).queryOrderedByKey().queryLimitedToLast(1).observeSingleEventOfType

但这似乎并没有观察到最新的条目。

【问题讨论】:

    标签: ios swift firebase firebase-realtime-database real-time


    【解决方案1】:

    我猜你走错路了。 childadd 完全符合您的需要。再次检查文档。 https://firebase.google.com/docs/database/admin/retrieve-data#child-added

    childadd 第一次获取所有列表,但仅获取刚刚添加到列表中的项目。

    添加了孩子

    child_added 事件通常在检索列表时使用 数据库中的项目。与返回整个值的值不同 位置的内容,child_added 每次触发一次 现有的孩子,然后每次将新的孩子添加到 指定的路径。事件回调传递了一个快照,其中包含 新孩子的数据。出于订购目的,它还传递了第二个 包含前一个孩子的键的参数。

    编辑: 要将 childadded 查询限制为最后一项:

    ref.queryLimited(toLast: 1).observe(.childAdded) { (snapshot) in
    // parse snapshot to get the last item
    

    【讨论】:

    • 是的,我知道,这就是我问这个问题的原因。如何只获取最新元素(并更新它),而不获取所有数据? @uguboz
    • 那你为什么不把你的触发函数放在childadd里面呢?我没明白你在问什么
    • 因为 childAdded 也会一次获取所有数据。我不想要那个。我只想获得最新的条目。 ...child_added is triggered once for each existing child...
    • 你不能用标志来处理初始情况吗?然后它将按您的预期工作
    • 啊哈,我现在明白了。那么你应该尝试 ref.queryLimited(toLast: 1).observe(.childAdded) { (snapshot) ... 而不是观察单个事件
    猜你喜欢
    • 2020-03-25
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2014-12-24
    • 2017-06-05
    相关资源
    最近更新 更多