2016-06-28 6 views
1

У меня есть этот кусок рабочего кода, который сохраняет данные в Firebase:Trouble пытается извлечь данные из 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" 
     } 
    }, 

Любая помощь будет оценена спасибо!

+0

могли бы вы описать, как структурирована ваша схема базы данных? вы можете найти файл экспорта JSON в базе данных -> данные. Пожалуйста, приложите его к своему вопросу, чтобы мы могли вам помочь. – adolfosrs

+0

Я обновил свой вопрос –

+0

как вы объявляете 'locationRef'? – adolfosrs

ответ

0

Вы должны иметь в виду ваше местоположение в следующем

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"

+0

Извините, приведенный выше код не работает ... Я очень смущен, потому что locationID - это переменная, которую я устанавливаю также для извлеченных данных, почему вы вызываете '.child (locationID)'? –

+0

@AhadSheriff Я назвал его 'locationId', потому что, глядя в дерево базы данных, которое вы прикрепили, у вас есть идентификаторы внутри ветки'/locations'. (я предполагаю, что вы работаете с '/ location/locationId/senderId') или что такое идентификаторы, которые вы храните внутри'/location'? – adolfosrs

Смежные вопросы