Firestore iOS queryWhereField и queryOrderedByField не возвращает конкретные данные - PullRequest
0 голосов
/ 18 мая 2018

В моем проекте iOS я использую Firestore.Мне нужно использовать queryWhereField и queryOrderedByField, я реализовал это следующим образом, но он не работает:

defFirestore = [FIRFirestore firestore];
colRef = [defFirestore collectionWithPath:@"walks"];
[[[colRef queryWhereField:@"requestId" isEqualTo:@(self.requestId)] queryWhereField:@"taskId" isEqualTo:@(self.taskId)] queryOrderedByField:@"createdDate"];
[colRef getDocumentsWithCompletion:^(FIRQuerySnapshot * _Nullable snapshot, NSError * _Nullable error) {
    if (error != nil) {
        NSLog(@"Error getting documents: %@", error);
    } else {
        for (FIRDocumentSnapshot *document in snapshot.documents) {
            NSLog(@"%@ => %@", document.documentID, document.data);
        }
    }
}];

Вышеприведенный запрос не возвращается, когда конкретная запись, скорее, возвращает все записи, также не упорядоченные по Поле createDate .Снимок экрана базы данных Firestore выглядит следующим образом:

enter image description here

1 Ответ

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

Хорошо, я уже понял это.Прежде всего необходимо создать индекс в Firestore для тех полей, из которых мы хотим запросить.Затем необходимо определить FIRQuery для запуска запроса с этими полями.Таким образом, запрос будет выглядеть следующим образом:

FIRQuery *walks = [[[colRef queryWhereField:@"requestId" isEqualTo:@(self.requestId)] queryWhereField:@"taskId" isEqualTo:@(self.taskId)] queryOrderedByField:@"createdDate"];
[walks addSnapshotListener:^(FIRQuerySnapshot *snapshot, NSError *error) {
    if (snapshot == nil) {
        NSLog(@"Error fetching documents: %@", error);
        return;
    }
    if (error != nil) {
        NSLog(@"Error getting documents: %@", error);
    } else {
        for (FIRDocumentChange *diff in snapshot.documentChanges) {
            if (diff.type == FIRDocumentChangeTypeAdded) {
                NSLog(@"%@ => %@", diff.document.documentID, diff.document.data);
            }
        }
    }
}];

Я использовал снимок, потому что я хочу получить обновление в реальном времени.

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