Firebase在查询为空时

我使用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.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 } }) 

希望这可以帮助 !