чтение данных медленно для большой базы данных в firebase в ios - PullRequest
0 голосов
/ 03 июля 2018

Я использую Firebase для своего приложения Chating. Я храню всю информацию о пользователе оттуда. Обычно, если база данных Firebase не имеет больших данных, она дает быстрый ответ. Но как только данные увеличиваются в базе данных, они становятся слишком медленными. Эта же база данных отлично работает на моем приложении для Android. Пожалуйста, помогите мне решить эту проблему.

Я использую следующий метод для извлечения данных из firebase.

-(void) get_grouplist_refresh_single{

    @try{
        appDel.totalUnreadMsg = 0;
        [[FIRDatabase database] goOnline];
        FIRDatabaseReference *rootRef= [[FIRDatabase database] referenceWithPath:[NSString stringWithFormat:@"/users/%@/activeGroups",appDel.UserId]];
        [rootRef  observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
            //NSLog(@"group: %@", snapshot.value);
            if ([snapshot exists]) {

                NSDictionary *postDict = snapshot.value;
                NSArray *key_dictionary=[postDict allKeys];
                if (key_dictionary.count > 0) {
                    for (int i=0; i < key_dictionary.count; i++) {
                        [self set_listner_group :[key_dictionary objectAtIndex:i]];
                        [self load_all_active_groupmsg :[key_dictionary objectAtIndex:i]];
                        if(key_dictionary.count - 1 == i){

                        }

                    }
                }else{

                }
            }else{
                [[FIRDatabase database] goOnline];
            }

        }];
    } @catch (NSException *exception) {
        NSLog(@"NSException %@",exception);
    } @finally {

    }
     }

-(void) set_listner_group :(NSString*) strGroupId{

    @try{
        FIRDatabaseReference *rootRef= [[FIRDatabase database] referenceWithPath:[NSString stringWithFormat:@"/groups/%@",strGroupId]];
        [rootRef  observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
            if ([snapshot exists]) {
                //Do somthing base on requirements
            }

        }];
    } @catch (NSException *exception) {
        NSLog(@"NSException %@",exception);
    } @finally {

    }
}
-(void) load_all_active_groupmsg :(NSString*)strgroupID{

    FIRDatabaseHandle handlerLoadAllMsg = 0;
    FIRDatabaseReference *rootRef= [[FIRDatabase database] referenceWithPath:[NSString stringWithFormat:@"/group_msgs/%@",strgroupID]];
    [rootRef keepSynced:YES];
    handlerLoadAllMsg = [rootRef observeEventType:FIRDataEventTypeChildAdded withBlock:^(FIRDataSnapshot *snapshot)
                         {
                             if (snapshot.exists)
                             {
                                 [rootRef removeObserverWithHandle:handlerLoadAllMsg];
                             }
                         }]; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...