Firebase: данные запроса начинаются с определенного значения - PullRequest
0 голосов
/ 25 мая 2018

Я использую Firebase для своего чата.

Я хочу получать все сообщения за определенное время.Но я получаю только одно сообщение от Firebase.

Вот мой код:

[[[_conversationDBRef queryOrderedByChild:@"time"] queryStartingAtValue:@(time)] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {

        for (FIRDataSnapshot* child in snapshot.children) {
            NSDictionary* msgData = child.value;
            NSLog(@"msgData: %@", msgData);
        }
    }];

Запрос:

(lldb) po _conversationDBRef
https://xxxxx-xxxxxx.firebaseio.com/Strike-Fighter/messages/4_5

(lldb) po [[_conversationDBRef queryOrderedByChild:@"time"] queryStartingAtValue:@(time)]
(/Strike-Fighter/messages/4_5 {
    i = time;
    sp = "548914514.2122542";
})

Данные data

1 Ответ

0 голосов
/ 25 мая 2018

Вы получаете только одно значение, потому что запрашиваете, используя queryStartingAtValue.Если вы хотите получать все сообщения ваших чатов с даты.Вам нужно будет использовать isGreaterThan.

Итак, если вы хотите получить сообщения с определенной даты, вам нужно будет сделать:

Firestore

[[[_conversationDBRef queryWhereField:@"time" isGreaterThan:@100000]
    queryOrderedByField:@"time"];

База данных Firebase Realtime

 [[[_conversationDBRef queryWhereField:@"time" queryStartingAtValue:@100000]
        queryOrderedByChild:@"time"];

вы также можете ограничить количество сообщений, которые вы хотите получить (например, для интеграции отложенной загрузки), добавив queryLimitedTo к вашемузапрос.

Я думаю, что ваш код в порядке.Попробуйте использовать queryOrderedByValue и посмотрите официальную документацию в https://firebase.google.com/docs/database/ios/lists-of-data

В любом случае, если ваше приложение запускается.Я предлагаю вам обновить вашу базу данных до Firebase Firestore.Это проще в использовании, более масштабируемо и выглядит так, что команда Firebase сосредоточится на этом больше, чем в REaltime.

Надеюсь, что это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...