第一次无法使用Firebase观察侦听器获取数据库项

时间:2017-02-15 12:45:56

标签: swift firebase firebase-realtime-database

我导入了一个简单的json文件,并在名为(" Quiz1")的实时数据库上发布。然后我尝试使用以下代码访问它

var ref: FIRDatabaseReference!

ref = FIRDatabase.database().reference()

print(ref.child("Quiz1").description())
ref.childByAutoId().observeSingleEvent(of:.value,  with: {snapshot in

    for child in snapshot.children  {

        print(child)
    }
}, withCancel: {error in print("WHAT")})

从我在文档中看到的内容,这应该在第一次启动应用程序时触发。但是代码只是略过了这一部分,我没有收到任何错误。我还更改了读/写权限,以确保此时不需要身份验证步骤。

3 个答案:

答案 0 :(得分:0)

要获得header h1 { margin-top: 0; } 中的表格的引用,您需要致电:

Firebase database

然后从这里你可以制作一个let ref = FIRDatabase.database().reference().child("your table name") 并从表中获取值

listener

答案 1 :(得分:0)

childByAutoId()在ref下创建新子节点,新创建的节点没有任何子节点。 您的代码中没有要观察的子节点。

如果您要在“测验”下获取节点,请尝试以下操作:

refHandle = ref.child("Quiz").observe(FIRDataEventType.value, with: { (snapshot) in
    let quizDict = snapshot.value as? [String : AnyObject] ?? [:]
    // process quizDict
})

答案 2 :(得分:0)

首先,如果要引用节点“Quiz1”,则需要使用child方法访问它,如下所示: ref.child("Quiz1")并将该引用保存在变量(refQuiz)中,然后您可以使用该引用(observeSingleEvent)进行查询(refQuiz)。

let ref = FIRDatabase.database().reference()    
let refQuiz = ref.child("Quiz1")

refQuiz.observeSingleEvent(of: .value) { (snapshot: FIRDataSnapshot) in

  for child in snapshot.children {
    print(child)
  }

}