我的树结构在FireBase中看起来像
在我去更新'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。
对于我遗失的明显事物的任何想法?
答案 0 :(得分: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,其结构与您正在使用的相同,并且工作正常;为不存在的用户ID返回null,并返回节点UserC_ID。
所以也许你设置userIDKey的代码行为不端或者你的userRef可能不稳定。