gpt4 book ai didi

ios - firebase - 获取成员的所有聊天室

转载 作者:行者123 更新时间:2023-11-28 19:35:25 24 4
gpt4 key购买 nike

我正在我的应用程序中集成多房间聊天,但我一直无法获取特定用户所属的所有聊天室的列表。

结构如下:

members structure

房间和成员是使用 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 个键/值对。

当我取出查询时,我得到了所有房间 key 。当我将结构更改为此 uid one level higher

我将获得该用户的所有房间,但使用此结构我无法将其他成员添加到该房间。所以我需要更深入地挖掘一个层次。

那么对于childByAutoId创建的节点如何设置查询呢?

感谢您的帮助!

最佳答案

尝试考虑这个数据结构。

{
"rooms": {
"-KQgDxLIt88yPt6nacDu": { ... }
},
"members": {
"QLfRoGpoCjWpzira7fljBj8g3EJ3": { ... }
},
"member-rooms": {
"QLfRoGpoCjWpzira7fljBj8g3EJ3": {
"-KQgDxLIt88yPt6nacDu": true
}
}
}

您可以通过观察 member-rooms/{uid} 来检索成员所属房间的 key :

[[_rootRef child: @"member-rooms/QLfRoGpoCjWpzira7fljBj8g3EJ3"] observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot *snapshot) {
NSLog("%@", snapshot.value); // the keys of the rooms of the member
}];

关于ios - firebase - 获取成员的所有聊天室,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39434758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com