【问题标题】:Swift 4 Firebase .childAdded not retrieving latest recordSwift 4 Firebase .childAdded 不检索最新记录
【发布时间】:2019-12-07 09:02:04
【问题描述】:

我正在尝试检索添加到我的孩子的最新孩子,例如:

3D373545-2C7C-470F-9A79-C98C3BF90E0A
   -Ll-gQ3TB9W9pH8Z3Gn6
    message: test
    username: test
   -Ll-gSbe4C0iS7R3V0Dy
    message: test
    username: test

我遇到的问题是当我第一次插入一条记录(以 Gn6 结尾的键)时,它无法检索它。但是,当我插入第二条记录(以 0Dy 结尾的键)时,它会检索上一条记录(以 Gn6 结尾)。这种情况一直持续下去。

  FirebaseDatabase.Database.database().reference().child("messages/" + key).observe(.childAdded) { (snapshot, key) in

        print("New record key is  : ")

        print(key)

    }

【问题讨论】:

    标签: swift firebase firebase-realtime-database swift4


    【解决方案1】:

    当您为.childAdded 附加一个观察者时,您的完成处理程序将为与观察者匹配的每个孩子触发。而且由于您不以任何方式限制观察者,您的回调将为"messages/" + key 下的每个节点触发。

    如果您只想获取最后一个节点,则需要观察一个仅侦听该最后一个节点的查询。由于您似乎在使用childByAutoId(),因此子节点已经按时间顺序排列,您可以这样做:

    FirebaseDatabase.Database.database().reference().child("messages/" + key)
      .queryOrderedByKey().queryLimited(toLast: 1)
      .observe(.childAdded) { (snapshot, key) in
        ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      相关资源
      最近更新 更多