如何获取在firebase中添加子项所创建的唯一键?

时间:2016-10-08 16:59:05

标签: ios objective-c firebase firebase-realtime-database

我正在为我的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

有人可以提供示例代码吗?

1 个答案:

答案 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);
}];