получить ключ, заданный значением, из Firebase в Swift - PullRequest
0 голосов
/ 28 ноября 2018

У вас есть реестр пользователей, и мы хотели бы ввести адрес электронной почты, а затем вернуть UID.

Есть ли способ сделать это быстро?

Мы бы хотели, чтобы функция возвращала это.

enter image description here

, как если бы мы вводили user@user.com в функцию ион вернет gSVeU6 ....

Любые советы и предложения действительно ценятся человеком.

Вот как выглядит дерево JSON firebase enter image description here

func findFriendsUIDFromFirebase(selectedFriendsEmail: String) {
    print("Hey from findFriendsUIDFromFirebase called")
    fir.child("registeredUsersOnPlatform").observeSingleEvent(of: .value, with: { (snapshot) in

        if snapshot.exists() {

            guard let allTheUsers = snapshot.value as? [String:String] else {
                print("Something is wrong with this snapshot")
                return
            }

            if let selectedUserUIDFromFirebase = allTheUsers.someKey(forValue: selectedFriendsEmail) {
                //DO STUFF

В основном таким образом мы загружаем все локально, затем перебираем словарь, но ищемдля лучшего способа, который не включает загрузку всего этого.Может быть что-то с .equals ()?

В то же время по какой-то причине при печати словаря он застрял на 100 парах ключ-значение.когда на реальном столе около 300-х пар.Это где-то вырезано.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вам нужно будет выполнить запрос Firebase для конкретного значения, которое вы ищете:

let queryEmail = "Userone@user.com"
fir.child("registeredUsersOnPlatform").queryOrderedByValue().queryEqual(toValue: queryEmail).observeSingleEvent(of: .value) { (querySnapshot) in
    for result in querySnapshot.children {
         let resultSnapshot = result as! DataSnapshot
         print (resultSnapshot.key)
    }
}

Вы также можете ограничить количество результатов запроса, которое вы хотели бы, с помощью .queryLimited(toFirst: x)

0 голосов
/ 28 ноября 2018

Если вы хотите получить Key при создании User в firebase, вы можете получить их в данных callBack пользователя, например:

Auth.auth().createUser(withEmail: email, password: pwd) { (user, _) in
            print(user?.uid)
        }

Иначе, если вы хотите получить ключ из значения в данных обычных списков, так что используйте queryEqualToValueзатем распечатайте дочерний ключ снимка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...