Как я могу получить сообщения пользователя в его профиле? - Swift & Firebase - PullRequest
0 голосов
/ 01 сентября 2018

Попытка получить сообщения пользователя в его профиле . Я использую коллекцию для отображения данных, но ничего не отображается.

Это функция, которую я использую для извлечения сообщений пользователя с их uid. Вот моя база данных Firebase

enter image description here

    //variables firebase
    var currentUser = Auth.auth().currentUser
    let databaseRef = Database.database().reference()
    let storage = Storage.storage().reference()

    //VARS
    var postsuser = [ProfileUserPosts]()


 func observeUserPosts() {

         let uid = Auth.auth().currentUser?.uid

        databaseRef.child("posts").queryOrdered(byChild: "timestamp").queryEqual(toValue: uid!).observe(.value) { (snapshot) in

            var tempPost = [ProfileUserPosts]()

            for child in snapshot.children {

                if let childSnapshot = child as? DataSnapshot {

                    let dict = childSnapshot.value as? [String: Any]
                    let address = dict!["address"] as? String
                    let breed = dict!["breed"] as? String
                    let phoneuser = dict!["phone"] as? String
                    let photoUrl = dict!["photoUrl"] as? String
                    let url = URL(string: photoUrl!)
                    let post = ProfileUserPosts(address: address!, breed: breed!, phone: phoneuser!, photoUrl: url!)
                    tempPost.insert(post, at: 0)

                }

                self.postsuser = tempPost
                self.postsCollectionView.reloadData()
            }
        }
    }

1 Ответ

0 голосов
/ 01 сентября 2018

Посмотрите на Firestore. Вы могли бы найти это лучше. В любом случае это звучит так, как будто вы должны понимать, как создать свою базу данных. Как только вы это сделаете, получение / настройка / обновление / удаление / запрос тривиально. См. Рекомендации по структуре данных Документация.

Избегать вложенности данных

Поскольку база данных Firebase Realtime позволяет вкладывать данные до 32 уровней, вы можете подумать, что это должна быть структура по умолчанию. Тем не менее, когда вы выбираете данные в расположение в вашей базе данных, вы также получаете все его дочерние узлы. Кроме того, когда вы предоставляете кому-то доступ для чтения или записи на узле в вашей базе данных, вы также предоставляете им доступ ко всем данным в этом узле. Поэтому на практике лучше всего сохранять структуру данных как плоскую насколько это возможно.

Сгладить структуры данных

Если данные вместо этого разбиты на отдельные пути, также называемые денормализация, это может быть эффективно загружено в отдельных вызовах, как это нужно. Рассмотрим эту уплощенную структуру:

Создание масштабируемых данных

При создании приложений часто лучше скачать подмножество списка. Это особенно распространено, если список содержит тысячи записей. Когда эти отношения статичны и однонаправленный, вы можете просто вкладывать дочерние объекты под родитель.

Иногда эти отношения более динамичны или могут быть необходимы денормализовать эти данные. Много раз вы можете денормализовать данные используя запрос для получения подмножества данных, как обсуждалось в Получить данные.

...