#firebase #dart #google-cloud-firestore
#firebase #dart #google-облачный firestore
Вопрос:
Как мне получить несколько документов из firebase? Я хочу получить все документы, которые находятся в списке.
Я могу выполнить приведенный ниже запрос только в том случае, если вместо списка я передаю ему один элемент для поля owner, поскольку isMemberOf не является реальным оператором. Я поместил его туда как нечто, на что, как я себе представляю, это может выглядеть.
Прямо сейчас я могу передать только одно значение и использовать isEqualTo: вместо моего составленного оператора.
Как мне это сделать?
Stream<List<Event>> subscribeToEventsByDates(
List<String> users, DateTime start, DateTime end) {
return Firestore.instance
.collection('events')
----> SELECT * (all that match) <------- doesn't exist? How to do this?
.where('owner', isMemberOf: users)
.where('start', isGreaterThanOrEqualTo: start)
.where('start', isLessThanOrEqualTo: end)
.snapshots()
.map((snapshot) => snapshot.documents
.map((event) => Event.fromJson(event.data))
.toList());
}
Ответ №1:
Если вы хотите передать массив строк в фильтр, чтобы сопоставить любую из них для данного поля, это называется запросом «в».
Документация API для where() предполагает, что для этого следует использовать «Where».
.where('owner', whereIn: users)
Из документации по in
запросам:
Используйте
in
оператор для объединения до 10 предложений equality (==
) в одном поле с логическимOR
.