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