Как я могу флаттер пожарный магазин Cyclic c запрос - PullRequest
0 голосов
/ 08 февраля 2020

Я хочу сделать запрос, если он соответствует условию, я хочу сделать запрос следующим запросом. У кого-нибудь есть идеи, как я могу это сделать?

Моя цель - сделать это на клиенте, так как нет запроса не в массиве

Query _query(List<dynamic> startAfter) {
    CollectionReference col = _firestore.collection("users");
    Query xx= col.where('xx', whereIn: _xx);
    Query yy = xx.where('yy', arrayContains: _yy);
    Query zz = yy.orderBy('zz');
    Query start;
    if (startAfter.length > 0) {
      start = zz.startAfter(startAfter);
    } else {
      start = zz;
    }
    Query limit = start.limit(1);
    return limit;
  }

Я думал, что-то вроде этого, но Я думаю, я не мог сделать это правильно

_query([]).getDocuments().then((onValue) {
            if (onValue.documents.length > 0) {
              if (_all.contains(onValue.documents.first.documentID)) {
                List<DocumentSnapshot> doc = onValue.documents;
                String id = doc.first.documentID;
                do {
                  _query(doc).getDocuments().then((onValue) {
                    doc = onValue.documents;
                    id = doc.first.documentID;
                  });
                }
                while(_all.contains(id) == false);
                if(doc.length > 0) {
                  debugPrint('found');
                } else {
                  debugPrint('could not find');
                }
              } else {
                debugPrint('found');
              }
            } else {
              debugPrint('could not find');
            }

1 Ответ

1 голос
/ 10 февраля 2020

вы можете сделать это с помощью await

Future<QuerySnapshot> _query([DocumentSnapshot startAfter]) {
    CollectionReference col = _firestore.collection("users");
    Query xx= col.where('xx', whereIn: _xx);
    Query yy = xx.where('yy', arrayContains: _yy);
    Query zz = yy.orderBy('zz');
    Query start;
    if (startAfter != null) {
      start = order.startAfterDocument(startAfter);
    } else {
      start = order;
    }
    Query limit = start.limit(1);
    return limit.getDocuments();
  }

после:

  QuerySnapshot snap = await _query();
  if (snap.documents.length > 0) {
    if (_all.contains(onValue.documents.first.documentID)) {
      List<DocumentSnapshot> doc = snap.documents;
      while (doc.length > 0 && _all.contains(doc.first.documentID) == false) {
        QuerySnapshot snap2 = await _query(doc.first);
        doc = snap2.documents;
      }
      if (doc.length > 0) {
        debugPrint('found');
      } else {
        debugPrint('could not find');
      }
    } else {
      debugPrint('found');
    }
  } else {
    debugPrint('could not find');
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...