繁体   English   中英

查询为空时的Firebase

[英]Firebase when query is empty

我使用firebase执行查询,以检查是否有任何具有特定值子项的对象。 问题是如果没有这样的对象,则代码不会运行。 因此,在下面的代码中,如果没有对象的子代的facebookID17则其余代码将永远不会运行。 有没有一种方法可以确定查询何时找到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)

})

检查您的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

要检查查询是否返回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 
    }
})

希望这可以帮助 !

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM