【问题标题】:Querying for existing nodes in Firebase is returning null在 Firebase 中查询现有节点返回 null
【发布时间】:2016-02-18 16:10:57
【问题描述】:

我的树形结构看起来像 FireBase 中的

  • 书籍
  • 用户
    • 用户A_ID
    • 用户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。

对我遗漏的显而易见的事情有什么想法吗?

【问题讨论】:

    标签: ios firebase


    【解决方案1】:

    有几件事。要测试 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。现在工作正常。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    相关资源
    最近更新 更多