如何从 Firebase 实时数据库读取 child 的值?

How to read values of a child from Firebase Realtime DB?

我正在尝试从我的数据库中获取值。但是,我没有成功。这是数据库的样子:

这是我试图读取值的方法:

    taskRef = Database.database().reference(withPath: "Tasks").child(titleOfTask)

    taskRef?.observeSingleEvent(of: .childAdded, with: { (snapshot) in
         if let taskDict = snapshot.value as? [String:Any] {
            print("Printing ---------> ",taskDict["Description"] as Any)
         }
    })

但是没有任何反应。理想情况下,我想将不同变量中的描述和截止日期都读入不同的变量中。


重要须知:

您在 JSON 中将监听器附加到 /Tasks/$titleOfTask,比如 /Tasks/Alpha。该侦听器要求为 /Tasks/Alpha 的第一个 child 节点调用,因此代码中的 snapshot 将指向 /Tasks/Alpha/Description。当您随后打印 taskDict["Description"] 时,您正在打印 /Tasks/Alpha/Description/Description 的值,该值不存在。

最简单的解决方法是监听 .value 事件:

taskRef?.observeSingleEvent(of: .value, with: { (snapshot) in
     if let taskDict = snapshot.value as? [String:Any] {
        print("Printing ---------> ",taskDict["Description"] as Any)
     }
})

现在 snapshot 拥有来自 /Tasks/Alpha 的所有数据,因此 taskDict["Description"] 最终成为来自 /Tasks/Alpha/Description 的值。