使用' .childAdded'时,Firebase不会回拨。

时间:2018-01-05 22:25:00

标签: ios swift firebase

我有以下代码,用Swift编写,我希望每次将新记录添加到我的数据库时都会调用它:

var databaseRef = Firebase()
    databaseRef = Firebase.init(url: "<MY_PROJECT_URL>")
    databaseRef.child(byAppendingPath: "channels").queryLimited(toFirst: 100).observe(.childAdded , with: { (snapshot) in
          print("New Message input by user")
    })

这是我的数据结构:

enter image description here

所以我基本上为分支渠道创建了一个监听器&#39;。完成处理程序只在程序开始时调用,然后再也不会调用。奇怪的是,如果我使用&#39; .value&#39;而不是&#39; .childAdded&#39; 它确实有效!我对使用&#39; .value&#39;不感兴趣因为这样可以在&#39;频道内返回整个数据块。分支,我真的只对添加的单个记录感兴趣。 (实际上是那些L1 ......伙计之一。当然是新的)任何想法?

1 个答案:

答案 0 :(得分:1)

如果您同时观察来自所有用户的消息,我建议稍微重构您的Firebase数据。使消息成为顶级对象,然后您可以观察整个部分。我不知道你的消息是什么样的,但我想如果你这样做,你需要在消息中添加对用户的引用,这样你就可以添加新消息并仍然看到哪个用户编写了它。