Почему эти запросы работают независимо, но не вместе?

#javascript #firebase #vue.js #google-cloud-firestore

#javascript #firebase #vue.js #google-облако-firestore

Вопрос:

У меня есть 2 запроса, которые я хочу использовать в своей коллекции firestore.

Эти 2 примера работают:

 database
  .collection('servicebonnen')
  .where('medewerker', '==', 'CEES')
  

и:

 database
  .collection('servicebonnen')
  .where('date', '>', this.today)
  .where('date', '<', this.tomorrow)
  

Почему такое объединение не работает?:

 database
  .collection('servicebonnen')
  .where('medewerker', '==', 'CEES')
  .where('date', '>', this.today)
  .where('date', '<', this.tomorrow)
  

Комментарии:

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

2. 3-й запрос объединяет все три критерия с И (т. Е. все должны совпадать). Поэтому, возможно, данные не соответствуют всем критериям

3. Вы создали составной индекс?

4. Вы получаете сообщение об ошибке?

5. @hkchakladar Похоже, что это было причиной проблемы. Хотите опубликовать это как ответ?

Ответ №1:

Как упоминалось в документе firestore здесь:

Вы также можете связать несколько методов where() для создания более конкретных запросов (логических И). Однако, чтобы объединить оператор равенства (==) с предложением range или array-contains (<, <=, >, >=, или array_contains), обязательно создайте составной индекс.

Итак, вам нужно создать составной индекс в вашем случае.

Ответ №2:

Как упоминал @hkchakladar, мне нужно было добавить составной индекс для генерации результатов для запросов, отличных от стандартных.