Firestore timestamp запрос диапазона дат с заказом по генерации ошибки - PullRequest
0 голосов
/ 20 июня 2019

Я написал запрос для фильтрации некоторых данных на основе диапазона дат и хочу упорядочить результат по некоторому полю (Int). Код, который я написал, генерирует исключение «FIRInvalidArgumentException».

Если я удалил "order by", тогда запрос выполнится идеально. Я уже создал индекс для visitDate и просмотров полей.

Индекс : визитДата По возрастанию По убыванию

let calendar = Calendar.current

let currentDateComponents = DateComponents(
  calendar: calendar,
  year: calendar.component(.year, from: Date()),
  month: calendar.component(.month, from: Date()),
  day: calendar.component(.day, from: Date()),
  hour: 0,
  minute: 0)

guard let currentDate = calendar.date(from: currentDateComponents) else {
  print("error");
  return
}

guard let weekEndDate = calendar.date(byAdding: .day, value: -7, to: currentDate) else {
  print("error");
  return
}

let queryRef = Firestore.firestore().collection("ArticleVisits")
  .whereField("visitDate", isGreaterThanOrEqualTo: weekEndDate)
  .whereField("visitDate", isLessThanOrEqualTo: currentDate)
  .order(by: "views", descending: true)
  .limit(to: limit)

Есть ли проблемы с использованием заказа по диапазону дат? Нужно ли для этого создать специальный индекс?

Ценю всю помощь.

1 Ответ

1 голос
/ 23 июня 2019

@ Джей, спасибо, что указал мне правильное направление.Согласно документации, в которой написано:

Однако, если у вас есть фильтр со сравнением диапазона (<, <=,>,> =), ваш первый порядок должен быть в том же поле:

Так что я должен заказать его по visitDate вместо просмотров .

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