2016-02-18 4 views
3
структуру

моего дерева выглядит в FireBaseЗапрашивания существующих узлов в Firebase возвращают нулевое

  • КНИГИ
  • ПОЛЬЗОВАТЕЛЕЙ
    • UserA_ID
    • UserB_ID
    • UserC_ID
      • UserName : @ ""
      • 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

Несколько вещей. Чтобы проверить значение null, вы должны действительно

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

Ahh, спасибо, что ответили. Я заметил, что мой firebase ref указывал на userA_ID вместо пользователей. Сейчас работает отлично. благодаря – ArdenDev

Смежные вопросы