Можно ли фильтровать данные Firestore по нескольким выбранным пользователем значениям в Angular? - PullRequest
0 голосов
/ 28 октября 2019

По сути, я пытаюсь создать фильтр продукта, в котором пользователь может выбирать (или не выбирать, например, что они не требуются) из любого из вариантов фильтра.

Мой пожарный магазин настроен как:

product
{
colour: "white"
brand: "a brand"
}

В настоящее время я могу фильтровать, скажем, 'color' с помощью этого кода:

 filterProducts(value: string){
    this.filteredProducts = this.db.collection('products', ref => ref.where('colour', '==', value)).valueChanges();
  }

Как я могу адаптировать вышеперечисленное кбыть в состоянии фильтровать по любому цвету, бренду или обоим? Это вообще возможно?

1 Ответ

1 голос
/ 28 октября 2019

Если вы спрашиваете, можете ли вы сделать запрос по нескольким полям, ответ «да». Например, для фильтрации по марке и цвету:

ref.where('colour', '==', 'white').where('brand', '==', 'a brand')

Подробнее об этом см. Документацию Firebase по фильтрации данных и составных запросов .

* 1009. * Вам, конечно, нужно будет передать оба значения в ваш метод filterProducts, чтобы иметь возможность их использовать.

Если вы хотите добавить условие только тогда, когда пользователь указал значение для этого фильтра, вы должны сделать что-то вроде этого:

ref = firebase.firestore.collection(...); // whatever you already have

if (colourValue) {
  ref = ref.where('colour', '==', colourValue);
}
if (brandValue) {
  ref = ref.where('brand', '==', brandValue);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...