Я новичок в Firebase и Swift, и у меня возникают проблемы с запросами. Итак, есть две вещи, которые я хотел бы сделать:
- Запросите моих пользователей и найдите только тех, которые содержат определенную строку в своем имени (или адресе электронной почты), и добавьте их в массив.
- Получите всех моих пользователей и добавьте их в массив.
Соответствующая часть моих данных для этого вопроса выглядит так:
Как видите, я использую простой логин Firebase (позже я хотел бы также добавить логин Facebook) и сохраняю своих пользователей по их uid.
Часть моего файла правил выглядит так:
"registered_users": {
".read": true,
".write": true,
".indexOn": ["name"]
}
Таким образом, каждый должен иметь доступ для чтения и записи к этой части моих данных.
Я также прочитал часть «Получение данных» в руководстве Firebase iOS на их веб-сайте, и, согласно этому руководству, мой код для получения всех имен пользователей и адресов электронной почты должен работать, по крайней мере, я так думаю. Но это не так. Вот мой код:
func getUsersFromFirebase() {
let registeredUserRef = firebaseRef.childByAppendingPath("registered_users")
registeredUserRef.queryOrderedByChild("name").observeSingleEventOfType(.Value, withBlock: { snapshot in
if let email = snapshot.value["email"] as? String {
println("\(snapshot.key) has Email: \(email)")
}
if let name = snapshot.value["name"] as? String {
println("\(snapshot.key) has Name: \(name)")
}
})
}
Я заметил, что в руководстве по firebase всегда использовался тип ChildAdded, а не Value, но для меня Value имеет больше смысла. Вывод с Value — это ничего, а вывод с ChildAdded — это только один пользователь, а именно тот, который вошел в систему прямо сейчас.
Итак, мои вопросы:
- Могу ли я выполнить этот запрос с моей текущей структурой данных или мне нужно избавиться от истории пользователей по их uid?
- Если да, то как мне изменить свой код, чтобы он работал?
- Если нет, то как лучше всего хранить моих пользователей и сделать возможным запрос их по имени?
- Как я могу запросить, например. "собрать" и получить только пользователя simplelogin:1 (Макс Мустерманн)?
Надеюсь, мое описание достаточно подробное. Заранее спасибо за вашу помощь.
Дополнение:
Странно то, что в руководстве «Получение данных» говорится, что возможен запрос и сортировка следующих данных по высоте.
Данные:
Код запроса:
И разве это не то же самое, что я намереваюсь сделать?