Ios 在Firebase中查询现有节点返回null

Ios 在Firebase中查询现有节点返回null,ios,firebase,Ios,Firebase,我的树结构看起来像FireBase 书 使用者 用户识别码 用户b_ID 用户c_ID 用户名:@“” 用户电子邮件:@“” UserBookReadCount:@“” 在我去更新“BookReadCount”之前,我尝试使用以下代码查询该用户是否存在。在 FQuery* query = [[userRef queryOrderedByKey] queryEqualToValue:userIDKey]; [query observeSingleEventOfType:FEventTy

我的树结构看起来像FireBase

  • 使用者
    • 用户识别码
    • 用户b_ID
    • 用户c_ID
      • 用户名:@“”
      • 用户电子邮件:@“”
      • 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


对我明显遗漏的事情有什么想法吗?

一些事情。要测试空值,您应该

 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,它与您使用的结构相同,并且工作正常;为不存在的用户id返回null,并在返回时返回节点UserC_id


因此,可能您设置userIDKey的代码行为不正常,或者您的userRef不可靠。

因此,您终于超过了2K标记。祝贺你获得了新的(也是当之无愧的)权限!啊,谢谢你的回复。我注意到我的firebase ref指向userA_ID而不是users。现在一切正常。谢谢