Скажем, у меня есть массив со значениями
types = ['jay', 'pigeon', 'crow', 'peacock']
, который я хотел бы использовать для выполнения запроса к коллекции Firestore birds
в зависимости от того, содержится ли свойство документа type
вэто.
Так что из
groaney: {
...
type: 'crow'
...
},
chirpie: {
...
type: 'chick'
...
},
jeery: {
...
type: 'jay'
...
}
мы должны получить
groaney: {
...
type: 'crow'
...
},
jeery: {
...
type: 'jay'
...
}
Я понимаю, что мог бы сделать запрос для отдельных элементов отдельно
Promise.all(
types.map(t =>
firebase.firestore().collection('birds')
.where('type', '==', t)
.get()
)
)
и затем объедините результаты.Тем не менее, я бы предпочел сделать это одним махом, используя один where()
, так как выполнение Promise.all()
на куче коллекций пожарных хранилищ where
выглядит для меня пустой тратой ресурсов.
Есть ли элегантный / эффективный способ добиться этого?
(В заключение отметим, что когда дело доходит до обратной задачи, то есть запроса к коллекции для членства в массиве одного значения, мы имеем where('types', 'array-contains', type)
на помощь.)