Firestore .orderBy Сервер времени штамп не работает SWIFT - PullRequest
0 голосов
/ 13 марта 2019

У меня есть поле "createAt", которое является отметкой времени сервера, оно выглядит так в firestore enter image description here

При выполнении моего запроса без .orderBy оно работает, но когда я добавляюфильтр заказов перестает работать.Я попытался переключить порядок .orderBy и .whereField

let ref = Firestore.firestore().collection("posts")
     .order(by: "createdAt", descending: true)
     .whereField("author.uid", isEqualTo: uid)

и

let ref = Firestore.firestore().collection("posts")
    .whereField("author.uid", isEqualTo: uid)
    .order(by: "createdAt", descending: true)

Оба не работают, но если я закомментирую строку .orderBy, это работает.Любые идеи, почему это может происходить

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Чтобы сделать что-то подобное, вам нужно создать составной индекс.При использовании обработчика ошибок в запросе вы увидите, что в сообщении об ошибке в консоли есть такое сообщение:

Для запроса требуется индекс.Вы можете создать его здесь: https://console.firebase.google.com/project...

Нажав на ссылку, вы сможете быстро создать индекс, необходимый для выполнения этого точного запроса.Вы можете изменить значение по умолчанию, если это необходимо.

0 голосов
/ 13 марта 2019

Здесь вы можете получить свой ответ в массиве, а затем сделать массив, как показано в примере ниже:

self.arrCompletereq.sort(by: { ($0.actualdropOfDateTime ?? "")
.localizedStandardCompare($1.actualdropOfDateTime ?? "") == .orderedDescending})

Здесь actualdropOfDateTime мой ключ в узле базы данных

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