Неверный моментальный снимок в запросе FirebaseOrdered byChild - PullRequest
0 голосов
/ 02 июня 2019

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

Моя структура данных выглядит следующим образом

media
 -L_2xS9LlY5hfXDErbde  //<- childByAutoID
     mediaUID: "-L_2xS9LlY5hfXDErbde"
     type: "video"
     userUID:  "Y9tm718aXrWK78i7mkOLNF57X2j1"

Код:

 var adminUserUID = "uek3xKdQdogHAYxJhDrMMoSj82x1"


 let ref = Database.database().reference()

     ref.child("media").queryOrdered(byChild: adminUserUID).queryLimited(toLast: 4)     

  class func observeChildAddedPostsOf(query: DatabaseQuery, _ completion: @escaping (Media) -> Void) {
    query.observe(.childAdded, with: { snapshot in
        guard snapshot.exists() else {print("snapshot on line \(#line) is nil")
            return
        }
        let media = Media(dictionary: snapshot.value as! [String : Any])
        completion(media)
    })
}

Стручки

 - Firebase (5.20.2):
    - Firebase/Core (= 5.20.2)
  - Firebase/Auth (5.20.2):
    - Firebase/CoreOnly
    - FirebaseAuth (= 5.4.2)
  - Firebase/Core (5.20.2):
    - Firebase/CoreOnly
    - FirebaseAnalytics (= 5.8.1)
  - Firebase/CoreOnly (5.20.2):
    - FirebaseCore (= 5.4.1)
  - Firebase/Database (5.20.2):
    - Firebase/CoreOnly
    - FirebaseDatabase (= 5.1.1)
  - Firebase/DynamicLinks (5.20.2):
    - Firebase/CoreOnly
    - FirebaseDynamicLinks (= 3.4.3)
  - Firebase/Messaging (5.20.2):
    - Firebase/CoreOnly
    - FirebaseMessaging (= 3.5.0)
  - Firebase/Storage (5.20.2):
    - Firebase/CoreOnly
    - FirebaseStorage (= 3.1.1)
  - FirebaseAnalytics (5.8.1):
    - FirebaseCore (~> 5.4)

1 Ответ

1 голос
/ 02 июня 2019

Этот код не делает то, что вы думаете:

ref.child("media").queryOrdered(byChild: adminUserUID)

Этот код берет все дочерние элементы узла media и упорядочивает их по значению их свойства adminUserUID. В JSON, который вы показываете, ни у одного дочернего узла нет свойства с именем "uek3xKdQdogHAYxJhDrMMoSj82x1".

Если ваша цель - упорядочить все дочерние узлы по значению их свойства userUID:

ref.child("media").queryOrdered(byChild: "userUID")

Если ваша цель - получить все дочерние узлы, чье свойство userUID имеет значение "uek3xKdQdogHAYxJhDrMMoSj82x1":

ref.child("media").queryOrdered(byChild: "userUID").queryValue(equalTo: "uek3xKdQdogHAYxJhDrMMoSj82x1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...