Получить сообщения из postId Firebase & Swift - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу получить конкретные сообщения по postId. Это что-то, что можно сделать с помощью firebase и swift?

В настоящее время я получаю ключ от geofire, в котором есть все нужные мне ключи postId. Можно ли получить почтовые данные, относящиеся к этим postIds Вот моя текущая попытка. Моя текущая попытка не добавляет ни одного сообщения в мой collectionView

var posts = [Post]()
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    let userLocation: CLLocation = locations[0] as CLLocation
    let currentUserLocation = userLocation

    let circleQuery = geoFire?.query(at: currentUserLocation, withRadius: 100.0)

    guard let uid = Auth.auth().currentUser?.uid else { return }

    _ = circleQuery?.observe(.keyEntered, with: { (key, location) in
        print(key)

        let ref = Database.database().reference().child("posts")
        var postId = key

        ref.child(uid).child(postId).observe(.value, with: { (snapshot) in
            self.collectionView?.refreshControl?.endRefreshing()

            guard let dictionaries = snapshot.value as? [String: Any] else { return }

            dictionaries.forEach({ (key, value) in

                guard let dictionary = value as? [String: Any] else { return }

                guard let user = Auth.auth().currentUser?.uid as? User else { return }

                var post = Post(user: user, dictionary: dictionary)
                post.id = key

                self.posts.append(post)
                self.posts.sort(by: { (post1, post2) -> Bool in
                return post1.creationDate.compare(post2.creationDate) == .orderedDescending
                })
            })
        }, withCancel: { (error) in
            print("There was an error getting the posts:", error)
        })

        self.locationManager.stopUpdatingLocation()
    })
}

Firebase database

1 Ответ

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

используйте снимок для проверки

let ref = Database.database().reference().child("posts")

    ref.observeSingleEvent(of: .value, with: { (snapshot) in
        if snapshot.hasChild("\(self.yourValueToCompare!)"){
            print("Exists in Database")


        }else{
            print("Does not Exists in Database")
        }
    })
...