【问题标题】:Firebase when query is empty查询为空时的 Firebase
【发布时间】:2016-05-08 18:50:35
【问题描述】:

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

})

【问题讨论】:

    标签: 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 
          }
      })
      

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-28
        • 2016-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多