Google Firestore, как запросить несколько вложенных коллекций в Flutter - PullRequest
1 голос
/ 17 января 2020

Я использую Firestore в своем проекте - для каждого пользователя у меня есть документ, и в каждом документе у меня есть подколлекции (недавние, запланированные).

  • элементы
    • документ (uid)
      • подколлекция (недавно)
        • doc1 (несколько полей)
        • doc2 ...
      • субколлекция (планируется)
        • doc1 ...
        • doc2 ...

В настоящее время я использую два StreamBuilder в своем приложении - один для getRecent геттера и второй для getPlanned, но я думаю, что это не так хороший подход.

Есть ли какой-нибудь лучший способ, как запросить эти две вложенные коллекции (в будущем их будет больше ...) в одном потоке? (Или как оптимизировать мою программу, чтобы не использовать большую пропускную способность)

Вот пример моего кода во Flutter

  // Get planned (getter in Data service class)
  Stream<dynamic> get getPlanned {
    return data
        .document(uid)
        .collection("planned")
        .snapshots()
        .map(_snapshotToPlanned);
  }

  // Stream Builder in Home widget
  StreamBuilder(
    stream: Data(uid: user.uid).getPlanned,
    builder: (context, snapshot) {
       if (snapshot.hasData) {
          plannedTrips = snapshot.data;

          if (snapshot.data.length == 0) return NothingWidget();

          return PageView.builder(
            pageSnapping: true,
            controller: _pageController,
            scrollDirection: Axis.horizontal,
            itemCount: plannedTrips.length,
            itemBuilder: (context, i) {
              return PlannedTrip(planned: plannedTrips[i]);
            },
          );
        } else ...

Есть ли у вас какие-либо идеи, как решить эту проблему? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...