【问题标题】:Trouble trying to retrieve data from Firebase尝试从 Firebase 检索数据时遇到问题
【发布时间】:2016-06-28 21:12:51
【问题描述】:

我有这段将数据保存到 Firebase 的工作代码:

let locRef = locationRef.childByAutoId()
let locItem = [
    senderId : [
        "location": getLocationID()
    ]
]

locRef.setValue(locItem)

我想检索用户(由 senderID 标识)的“位置”,所以我尝试了这段代码:

locationRef.child("location").child(senderId).observeSingleEventOfType(.Value, withBlock: { (snapshot) in
        self.locationId = snapshot.value!["location"] as! String
    }) { (error) in
        print(error.localizedDescription)
    }

但是,当运行这段代码时,我的应用程序崩溃了,并且没有错误。我想我的错误可能是.child("location") 一定是别的东西,但我不知道是什么。

数据库结构(JSON):

{
  "locations" : {
    "-KLEdoj2eiF7EW9m0815" : {
      "W6vSOHZLTwNM33JYqkKHvaIVRF13" : {
        "location" : "Seattle, WA"
      }
    },
    "-KLLfcOvYHwIufBALM0-" : {
      "W6vSOHZLTwNM33JYqkKHvaIVRF13" : {
        "location" : "London, United Kingdom"
      }
    },

任何帮助将不胜感激!

【问题讨论】:

  • 您能描述一下您的数据库架构的结构吗?您可以在数据库 -> 数据中找到 JSON 导出文件。请将其附加到您的问题中,以便我们为您提供帮助。
  • 我已经更新了我的问题
  • 你如何声明locationRef
  • var locationRef: FIRDatabaseReference!

标签: swift firebase firebase-realtime-database


【解决方案1】:

您应该将您的位置称为以下内容

FIRDatabase.database().reference().child("locations").child(locationId).child(senderId).observeSingleEventOfType(.Value, withBlock: { (snapshot) in
        self.location = snapshot.value!["location"] as! String
}

例如:

如果您有locationId = "-KLEdoj2eiF7EW9m0815"senderId = "W6vSOHZLTwNM33JYqkKHvaIVRF13",上述调用会将self.location 设置为"Seattle, WA"

【讨论】:

  • 对不起,上面的代码不起作用...我很困惑,因为我正在设置检索数据的变量 locationID,你为什么要调用.child(locationID)
  • @AhadSheriff 我将其命名为locationId,因为查看您附加的数据库树,您的/locations 分支中有ID。 (我假设您与/location/locationId/senderId 合作)或者您在/locations 中存储的ID 是什么?
猜你喜欢
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
相关资源
最近更新 更多