我正在为我的ios项目使用firebase数据库。
我使用childByAutoId
添加了一些字段。
[[[_ref child:@"Users"] childByAutoId] setValue:@{@"data": @"my new json data string By aqeel", @"email": @"abc.xyz@email.com"}];
现在由于某种原因,我必须从数据库中搜索特定的孩子,比如电子邮件ID。如果存在电子邮件ID,我想获得该孩子的唯一密钥。
我这样做
[[[[_ref child:@"Users"] queryOrderedByChild: @"email" ] queryEqualToValue:@"abc.xyz@email.com" ] observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot *snapshot) {
NSLog(@"%@ Key %@ Value", snapshot.key,snapshot.value);
}];
在密钥中,我得到"用户"在价值中,我得到Users
字段中的所有条目。但我希望得到孩子的关键abc.xyz@email.com
。
有人可以提供示例代码吗?
答案 0 :(得分:1)
对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。
这意味着您必须loop over the snapshot.children
。
或者,您可以倾听单个.ChildAdded
事件并以此方式接触孩子:
[[[[_ref child:@"Users"]
queryOrderedByChild: @"email" ]
queryEqualToValue:@"abc.xyz@email.com" ]
observeSingleEventOfType:FIRDataEventTypeChildAdded withBlock:^(FIRDataSnapshot *snapshot) {
NSLog(@"%@ Key %@ Value", snapshot.key,snapshot.value);
}];