我见过 how to retrieve multiple data in one query firebase所以这可能是一个类似的问题,但我是 Firebase 的新手,我没有正确理解。
这是我的情况:
我有一个这样的 Firebase 数据库:
我想检索参与特定事件的用户。
编辑
我试过了,
Firebase* childrens = [server childByAppendingPath"Users"];
Firebase* firebaseUser = [childrens childByAppendingPath:self.myuserid];
Firebase* firebaseEvent = [firebaseUser childByAppendingPath"Events"];
Firebase* fbuser= [firebaseEvent childByAppendingPath"Created"];
FQuery* query1 = [fbuser queryOrderedByChild"id"];
handleFirebase = [query1 observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot){
NSEnumerator* childrens = snapshot.children;
[childrens.allObjects enumerateObjectsUsingBlock:^(FDataSnapshot* rootSnap,NSUInteger rootIndex,BOOL* rootStop){
NSDictionary* rootData = rootSnap.value;
NSString* rootKey = rootSnap.key;
NSLog(@"\nRootKey: %@\nRootData: %@",rootKey,rootData);
}];
这里是 NSLog
2016-03-10 15:27:23.399 SquadApp[4425:110128]
RootKey: olbuzevent1
RootData: {
createdTime = "2016-03-08T11:53:33Z";
name = "OLBUZ event 1";
participents = {
"335e63c9-46c6-4ff8-99e7-1537d99731f7" = {
id = "335e63c9-46c6-4ff8-99e7-1537d99731f7";
joinnedTime = 0;
};
};
}
2016-03-10 15:27:24.150 SquadApp[4425:110128]
RootKey: olbuzevent2
RootData: {
createdTime = "2016-03-08T12:23:28Z";
name = "OLBUZ event 2";
participents = {
"335e63c9-46c6-4ff8-99e7-1537d99731f7" = {
id = "335e63c9-46c6-4ff8-99e7-1537d99731f7";
joinnedTime = 0;
};
};
}
在 NoSQL 数据库中,您通常必须按照您希望在应用程序中使用数据的方式对数据进行建模。您当前的结构非常适合显示用户组织/参与的事件列表。如果这是您的用例之一,那就太好了。
但是,如果您还有一个用例来显示参与事件的所有用户,您可能必须添加一个数据结构来跟踪它。
event_users
eventid1
uid1: 'participant'
uid2: 'organizer'
uid3: 'participant'
这个过程被称为非规范化,在我们的一个(相当老的)blog posts 中进行了介绍。在 documentation on structuring data .在最后一页中,您可能还应该阅读 recommendation on nesting .
关于ios - Firebase iOS SDK : How to get multiple Data in one query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35912819/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) | Powered by Discuz! X3.4 |