Ios 如何在Swift中过滤Firebase数据?
基本上,我有一个名为topics的结构,其中包含Ios 如何在Swift中过滤Firebase数据?,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,基本上,我有一个名为topics的结构,其中包含标题、描述和发布标志(请参见下面的屏幕截图以了解说明) 在应用程序中,我想过滤数据,只显示发布了published=true的主题 这就是我想做的: self.ref = FIRDatabase.database().referenceFromURL(FIREBASE_URL).child("topics") self.ref?.queryEqualToValue("published") self.ref?.ob
标题
、描述
和发布
标志(请参见下面的屏幕截图以了解说明)
在应用程序中,我想过滤数据,只显示发布了published=true
的主题
这就是我想做的:
self.ref = FIRDatabase.database().referenceFromURL(FIREBASE_URL).child("topics")
self.ref?.queryEqualToValue("published")
self.ref?.observeEventType(.Value, withBlock: { (snapshot) in
//...Handle Snapshot here
})
但这是行不通的。我应该如何处理这个问题?提前感谢您的帮助。您有一些小错误。总的来说没什么不好的,但结合起来,它们永远不会起作用:
query…
方法都会返回一个新对象orderByChild()
才能筛选其值let ref = FIRDatabase.database().referenceFromURL(FIREBASE_URL).child("topics")
let query = ref.queryOrderedByChild("published").queryEqualToValue(true)
query.observeEventType(.Value, withBlock: { (snapshot) in
for childSnapshot in snapshot.children {
print(childSnapshot)
}
})
我们经常收到这个问题。例如,昨天的这个看起来非常相似:。由于我的解释随每个答案的不同而不同,我建议浏览一点来阅读我的答案,直到它单击为止。使用此功能,您可以检查存在或不存在的任何数据
self.ref = FIRDatabase.database().referenceFromURL(FIREBASE_URL).child("topics").
queryOrderedByChild("published").queryEqualToValue(true)
.observeEventType(.Value, withBlock: { (snapshot) in
for childSnapshot in snapshot.children {
print(snapshot)
}
})
func checkUserExsistance(_ firURL : String ,_ childNode : String,_ value : String,_ ChildKey : String, completion : @escaping(Bool)->()){
let DBRef = Database.database().reference(fromURL: firURL)
let newDB = DBRef.child(childNode).queryOrdered(byChild: ChildKey).queryEqual(toValue: value)
newDB.observe(.value, with: { (snapPhot) in
print(snapPhot.value)
}) { (erooor) in
print(erooor)
}
}
就这样!再次感谢你的帮助,弗兰克!如果数据嵌套得更深一层,是否仍有可能。例如,如果在“published”下有一个包含真/假值的键列表。您想按
/published/key1=true
进行筛选这就是我遇到的问题。我尝试了这个方法,但我收到了所有的子值,而不仅仅是传递查询条件的子值。我正在使用.childAdded和queryStarting(在:)。提前感谢您的指点。第1点非常重要。需要声明变量来存储查询,并观察该查询中的数据以获得正确的结果。1.正在调用任何查询。。。方法返回一个新对象是否可以获取与我们使用的相同的记录?我指的是所有标题以“s”开头的记录。请将您的答案始终放在上下文中,而不仅仅是粘贴代码。有关详细信息,请参阅。好的,谢谢!:D