#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, мне нужно было добавить составной индекс для генерации результатов для запросов, отличных от стандартных.