我正在尝试获取仅由 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)
})
}
pod
- 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")
关于swift - firebase queryOrdered byChild 的错误快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56417040/