Создание запроса следует шаблону построителя: когда вы вызываете where
, он возвращает Query
, и на этом Query
вы можете снова вызвать where
.
Так что, если у вас есть массив Темы, и вы хотите создать запрос из них, вы можете сделать:
var query = firebase.firestore().collection("bla");
['Math', 'Science', 'History'].forEach((subject) => {
query = query.where(`subject[${subject}.toLowerCase()]'`, '==' , true);
})
query.get()....
Обратите внимание, что в настоящее время Firestore поддерживает оператор array-contains-any
, который значительно лучше масштабируется для этих типов операций и может работать с до 10 предметов одновременно.
Чтобы использовать это, ваши документы должны будут содержать массив subjects
, например:
subjects: ['Math', 'Biology']
И тогда вы запросить его с помощью:
var query = firebase.firestore().collection("bla")
.where('subjects', 'array-contains-any', ['Math', 'Science', 'History']);
query.get()...