Google Firestore如何在Flutter中查询多个子集合

时间:2020-01-17 09:53:43

标签: firebase flutter dart google-cloud-firestore

我在我的项目中使用Firestore-对于我拥有文档的每个用户和每个文档中的子集合(最近的,计划的)。

    • 文档(uid)
      • 子集合(最近)
        • doc1(几个字段)
        • doc2 ...
      • 子集合(计划中)
        • doc1 ...
        • doc2 ...

当前,我在我的应用程序中使用了两个StreamBuilder-一个用于getRecent的getter,另一个用于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 ...

您有什么想法,如何解决这个问题? 谢谢!

0 个答案:

没有答案