我正在尝试获取仅由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)

最佳答案

此代码不执行您认为它执行的操作:

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")

10-08 17:29