2016-02-18 149 views
3

我的樹結構看起來就像在火力查詢在火力地堡現有節點被返回null

  • BOOKS
  • USERS
    • UserA_ID
    • UserB_ID
    • UserC_ID
      • 用戶名:@「」
      • USEREMAIL:@ 「」
      • UserBookReadCount:@ 「」

我去更新 'BookReadCount' 之前,我試圖查詢該用戶的使用存在以下代碼。在

FQuery* query = [[userRef queryOrderedByKey] queryEqualToValue:userIDKey]; 
[query observeSingleEventOfType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) 
      { 
       NSLog(@"Snapshot value: %@", snapshot.value); 
       if(snapshot.hasChildren) 
       { 
        // UserX_ID exists. Use 'updateChildValues' to update the data 
       } 
       else 
       { 
        // UserX_ID does NOT exist. Use 'setValue' to create the data 
       } 

      }]; 

如果用戶不存在我然後使用'setValue'添加一個新用戶到這個列表。如果用戶存在,那麼我使用'updateChildValues'來更新用戶數據。所有這些工作正常。

我現在面臨的問題是與查詢。即使用戶存在或不存在,上述查詢始終返回null。

對我缺少明顯的東西有什麼想法?

回答

5

一些事情。要測試爲空,你應該真的

if (snapshot.value == [NSNull null]) 

這是一個稍微修改的代碼實現,包括NSNull檢查。

Firebase *ref = [self.myRootRef childByAppendingPath:@"users"]; 

FQuery *query = [[ref queryOrderedByKey] queryEqualToValue:@"UserC_ID"]; 

    [query observeSingleEventOfType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) { 

     if (snapshot.value == [NSNull null]) { 
      NSLog(@"was null"); 
     } else { 
      NSLog(@"key: %@ %@", snapshot.key, snapshot.value); 
     } 
    }]; 

我建立了一個與您使用的結構相同且測試結果正確的Firebase測試;對於不存在的用戶標識返回null,並在返回時返回節點UserC_ID。

所以,也許你的代碼,設置userIDKey是行爲不端或也許你的userRef是靠不住的。

+0

而且你終於超過了2K大關。祝賀你的新(當之無愧)權限! –

+0

啊,謝謝你的回覆。我注意到我的firebase ref是指向userA_ID而不是用戶。現在工作正常。謝謝 – ArdenDev