【发布时间】:2016-09-11 09:37:58
【问题描述】:
我在我的应用程序中集成了多房间聊天,但我一直无法获取特定用户所属的所有聊天室的列表。
结构如下:
房间和成员是使用 childByAutoId 创建的,如下所示:
FIRUser *user = [FIRAuth auth].currentUser;
mdata[@"uid"] = user.uid;
roomKey = [[_rootRef child:@"messages"] childByAutoId].key;
NSString *memberID = [[[_rootRef child:@"members"] child: roomKey ] child: user.uid ].key;
// set Meta data for member to be able to recognize later
[[[[_rootRef child:@"members"] child: roomKey ] child: memberID ] setValue:mdata];
现在我正在尝试为这样的(硬编码)用户获取房间列表:
-(void) getRoomKeys {
[[[[_rootRef child: @"members"] queryOrderedByChild:@"uid" ] queryEqualToValue:@"QLfRoGpoCjWpzira7fljBj8g3EJ3"]
observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot *snapshot) {
NSDictionary<NSString *, NSString *> *message = snapshot.value;
}];
}
这会返回 0 个键/值对。
我将为该用户获取所有房间,但使用这种结构,我无法将其他成员添加到该房间。所以我需要更深入地挖掘一个层次。
那么如何设置对childByAutoId创建的节点的查询呢?
感谢您的帮助!
【问题讨论】:
-
弗兰克,我刚刚注意到您编辑了一些内容,但无法发现您的编辑。你能指出吗?谢谢!
标签: ios objective-c firebase firebase-realtime-database