【问题标题】:Firebase when query is empty查询为空时的 Firebase
【发布时间】:2016-05-08 18:50:35
【问题描述】:
我使用 firebase 执行查询以检查是否有任何对象具有具有特定值的子对象。问题是如果没有这样的对象,代码就不会运行。因此,在下面的代码中,如果没有具有facebookID 即17 的子对象的对象,则其余代码将永远不会运行。有没有办法确定查询何时找到0 结果?
func previousUser(completion:(result:Bool)->Void){
var queryFound = false
print("check if user is previous")
print(UserData.globalfacebookID)
let ref = Firebase(url:"https://amber-torch-556.firebaseio.com/Users")
ref.queryOrderedByChild("facebookID").queryEqualToValue(17).observeSingleEventOfType(.ChildAdded, withBlock: { snapshot in
print(snapshot.childrenCount)
print("query has ran")
UserData.globalparseID = snapshot.key
queryFound = true
completion(result:queryFound)
})
【问题讨论】:
标签:
ios
swift
firebase
firebase-realtime-database
【解决方案1】:
检查您的 ref 以确保其有效。
试试这个
ref.queryOrderedByChild("facebookID").queryEqualToValue(17)
.observeEventType(.Value, withBlock: { snapshot in
if snapshot.value is NSNull {
print("dude, snapshot was null")
} else {
print(snapshot.key)
}
})
将 .ChildAdded 更改为 .Value,然后检查 NSNull
【解决方案2】:
要检查查询是否返回0结果,您可以检查快照如下:
if snapshot.exists() {
// write relevant logic here
}
else {
// handle the case when a query finds 0 results
}
在你的情况下,
func previousUser(completion:(result:Bool)->Void){
var queryFound = false
print("check if user is previous")
print(UserData.globalfacebookID)
let ref = Firebase(url:"https://amber-torch-556.firebaseio.com/Users")
ref.queryOrderedByChild("facebookID").queryEqualToValue(17).observeSingleEventOfType(.ChildAdded, withBlock: { snapshot in
if snapshot.exists() {
print(snapshot.childrenCount)
print("query has ran")
UserData.globalparseID = snapshot.key
queryFound = true
completion(result:queryFound)
}
else {
// handle the case where query finds zero(0) results
}
})
希望这会有所帮助!