Запрос пользователей по имени или адресу электронной почты с помощью Firebase (Swift)
Я совсем новичок вFirebase а такжестриж и у меня возникли некоторые проблемы, когда дело доходит до запросов. Так что я бы хотел сделать две вещи:
Запросить моих пользователей инайти только те, которые содержат определенную строку в их имя (или адрес электронной почты) и добавить их в массив.Получить всех моих пользователей и добавить их в массив.Соответствующая часть моих данных по этому вопросу выглядит так:
Как видите, я использую простой лог 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 - это ничто, а выходные данные с помощью ChildAdded - только один пользователь, а именно тот, который вошел в систему прямо сейчас.
Итак, мои вопросы:
Могу ли я сделать этот запрос с моей текущей структурой данных или мне нужно избавиться от рассказов пользователей по их uid?Если да, как мне изменить свой код, чтобы он работал?Если нет, как лучше всего хранить своих пользователей и делать запросы к ним по имени?Как я могу запросить, например, «собрать» и получить только пользователя simplelogin: 1 (Max Mustermann)?Я надеюсь, что мое описание достаточно подробное. Спасибо заранее за вашу помощь.
дополнение:
Странно то, что в руководстве «Извлечение данных» говорится, что можно запрашивать и сортировать следующие данные по высоте.
Данные:
Код запроса:
И разве это не то же самое, что я собираюсь сделать?