Flutter Web Firebase - Получить коллекцию по полю под-коллекции - PullRequest
0 голосов
/ 16 января 2020

Я создаю веб-приложение, связанное с пожарным магазином. Схема базы данных выглядит следующим образом:

Firestore Schema

Firestore Schema

Моя проблема в том, что я хочу получить ссылку на документ пользователя, т. Е. (Компания и идентификатор пользователя) от простого ввода адреса электронной почты пользователей. Ниже приведен код моего метода getUserRef ():

Future<fs.DocumentReference> getUserRef (String userEmail) async {

String comp;
String id;
List<String> companies = await companyList();
    for (var i = 0; i < companies.length; i++) {
      store.collection('companies').doc(companies[i]).collection('users').get().
      then((val) {
        val.forEach((user){
          if(user.data()['Email'] == userEmail) {
            comp = user.data()['company'];
            id = user.id;
          }

        });

      });

    }
  fs.DocumentReference ref = store.collection('companies').doc(comp).collection('users').doc(id);

return ref;
 }

Мой метод companyList() работает нормально и получает список всех идентификаторов компании c. Я не могу понять, как заставить это работать, и не могу продолжать проект без него.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 16 января 2020

Звучит так, как будто вы ищете запрос группы сбора, который будет одним запросом, который выполняет поиск по users всех компаний одновременно.

Это будет запрос типа:

var query = Firestore.instance.collectionGroup("users").where("Email", isEqualTo: userEmail);
var querySnapshot = await query.getDocuments();
var userDocumentRef = querySnapshot.documents[0];

См. Также:

...