Получить словарь пользователей Uid на Firebase - PullRequest
0 голосов
/ 07 марта 2020

Это мой случай; Мне нужен словарь всех пользователей в моем приложении, чтобы использовать didSelectRowAt на UITableView, чтобы получить искомых пользователей uid. Моя база данных firebase имеет следующую структуру: запрещено загружать изображения, поэтому ссылка здесь not allowed to upload Images so link here

Кроме того, я успешно сделал string/dictionary из делая имена пользователей,

        let rootRef = Database.database().reference()
    let query = rootRef.child("users").queryOrdered(byChild: "users")
    query.observe(.value) { (snapshot) in
        for child in snapshot.children.allObjects as! [DataSnapshot] {
            if let value = child.value as? NSDictionary {
               // declaring a user in class User() which was made with strings(name, email, ect.)
            let user = User()

            let name = value["name"] as? String ?? "name not found"
            // making the string of it go into the user.name
            user.name = name
            // appending it into a variable of class user()
            self.users.append(user)
            }
     }
}

Я не уверен, как это сделать, потому что uid's все разные и не имеют имени (ex. email: test@test.com).

Возможно, мне нужно реструктурировать базу данных, чтобы допустить это, но я не слишком уверен. Спасибо за помощь!

1 Ответ

0 голосов
/ 07 марта 2020

Один из способов - сохранить поле для uid вместе с полями name, email и profileImageURI.

let rootRef = Database.database().reference()
guard let uid = rootRef.child("users").childByAutoId().key

Теперь отправьте uid как поле при сохранении данных в firebase. При получении данных вы можете отобразить данные следующим образом:

let query = rootRef.child("users").queryOrdered(byChild: "users")
query.observe(.value) { (snapshot) in
    for child in snapshot.children.allObjects as! [DataSnapshot] {
        if let value = child.value as? NSDictionary {
           // declaring a user in class User() which was made with strings(name, email, etc.)
        var dict = [String:String]()
        let user = User()
        let name = value["name"] as? String ?? "name not found"
        // making the string of it go into the user.name
        user.name = name
        user.uid = value["uid"]
        dict[name] = "\(uid)"
        }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...