Поиск Flutter Firestore из более чем 1 коллекции - PullRequest
0 голосов
/ 06 мая 2020

Итак, я пытаюсь выполнить поиск из двух или более коллекций. Вот моя коллекция:

Tier-1
Tier-2
Tier-3

Допустим, я хочу выполнить поиск по ключевому слову «имя», и я хочу добиться того, чтобы поиск выполнялся с уровня 1 на уровень 3. Если нет документа, равного «name» из Уровня-1, он перейдет к Уровню-2, если есть документ, равный «name» на Уровне-2, он остановится и вернет документ. Можно ли добиться? или мой лог c совершенно неверен

1 Ответ

1 голос
/ 06 мая 2020

По сути, вы говорите, что у вас следующая структура:

Tier-1 (collection) -> docId(document) -> Tier-2 (collection) -> docId(document) -> Tier-3 (collection) -> docId(document)

Вы можете сделать следующее:

  void getData() {
    Firestore.instance
        .collection("Tier-1")
        .where("name", isEqualTo: "peter")
        .getDocuments()
        .then((querySnapshot) {
      querySnapshot.documents.forEach((result) {
        if (result.exists) {
          print(result.data);
        } else {
          Firestore.instance
              .collectionGroup("Tier-2")
              .where("name", isEqualTo: "peter")
              .getDocuments()
              .then((querySnapshot) {
            querySnapshot.documents.forEach((result) {
              if (result.exists) {
                print(result.data);
              } else {
                Firestore.instance
                    .collectionGroup("Tier-3")
                    .where("name", isEqualTo: "peter")
                    .getDocuments()
                    .then((querySnapshot) {
                  querySnapshot.documents.forEach((result) {
                    if (result.exists) {
                      print(result.data);
                    } else {}
                  });
                });
              }
            });
          });
        }
      });
    });
  }

Сначала вы проверяете верхнюю коллекцию Tier-1 , если результат не возвращается, то вам нужно проверить подколлекцию Tier-2

...