Облачный Firestore ИЛИ запрос

#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 .