繁体   English   中英

Swift 4 Firebase .child添加了未检索到的最新记录

[英]Swift 4 Firebase .childAdded not retrieving latest record

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

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)

    }

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM