У меня проблема с функцией queryOrdered()
, я действительно не знаю, как с ней справиться ...
Предполагая, что моя структура базы данных:
Planes{
Uid{
SE{
AutoID{
.Auto-Id
.Picture
.Registration
.Type
.model
}
AutoID{
//Same as first one
}
}
ME{
AutoID{
//Same as first one
}
}
}}
Inв этой части моей базы данных я бы хотел выполнить поиск по .Registration
, поэтому я установил ссылку на Planes > UId
И после этого выполните код:
var acftPickerSelected = aircrafts[listAcftsPicker.selectedRow(inComponent: 0)]
if let user = Auth.auth().currentUser{
// user is connect
let ref = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
let ev = ref.child("Planes").child(userID!)
ev.queryOrdered(byChild: "Registration").queryEqual(toValue: acftPickerSelected).observeSingleEvent(of: .value) { (snapshot: DataSnapshot) in
for child in snapshot.children {
let value = snapshot.value as? NSDictionary
self.pickerRegi = value?["Registration"] as? String ?? "..unknown.."
self.stdbPickerType = value?["Type"] as? String ?? "..unknown.."
self.pickerModel = value?["model"] as? String ?? "..unknown.."
print("Avion : \(self.pickerRegi) - \(self.pickerModel) - \(self.stdbPickerType)")
}
}
Но появляется это сообщение:
2018-11-27 18: 03: 54.797824 + 0100 XXXXXXXXXX [12954: 527986] 5.10.0 - [База данных / база данных] [I-RDB034028] Использование неопределенного индекса.Ваши данные будут загружены и отфильтрованы на клиенте.Подумайте о том, чтобы добавить «.indexOn»: «Регистрация» в / Planes / BJMhmQzJXldULc5X9Y2WzjFEs9a2 к вашим правилам безопасности для повышения производительности
Итак, я добавил правила для firebase, например:
{"rules": {
"Planes":{
"$uid":{
".indexOn": ["Registration"],
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
},
".read": true,
".write": true}}
А теперь сообщение об ошибке больше не появляется, но в этой части ничего не происходит:
self.pickerRegi = value?["Registration"] as? String ?? "..unknown.."
self.stdbPickerType = value?["Type"] as? String ?? "..unknown.."
self.pickerModel = value?["model"] as? String ?? "..unknown.."
print("Avion : \(self.pickerRegi) - \(self.pickerModel) - \(self.stdbPickerType)")
Как я могу это исправить?
Спасибо за помощь.