Firebase查询上的快照错误

时间:2019-06-02 16:51:00

标签: swift firebase firebase-realtime-database

我正在尝试获取仅由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 个答案:

答案 0 :(得分:1)

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

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