【问题标题】:Flutter / Firestore - How can i fetch collection in subcollection userid equal to currentuserFlutter / Firestore - 我如何在等于 currentuser 的子集合用户 ID 中获取集合
【发布时间】:2021-07-12 21:51:45
【问题描述】:

我的 Firestore 结构在这里,

我想获取课程数据。但只有成员集合中具有相同用户 ID 的用户。但我不能。 这是最糟糕的用法吗?

  body: StreamBuilder(
    stream: firestore
        .collection('lessons')
        .where('members', isEqualTo: FirebaseAuth.instance.currentUser.uid)
        .snapshots(),
    builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
      if (!snapshot.hasData) {
        return Center(
          child: CircularProgressIndicator(),
        );
      } else {
        return Container(
          child: ListView(
            scrollDirection: Axis.vertical,
            children: snapshot.data.docs.map((document) {
              return Card(
                margin: EdgeInsets.all(5),
                child: Column(
                  children: [
                    ListTile(
                      title: Text(document['lessonTitle']),
                      leading: Icon(Icons.label),
                      trailing: Text(document['lessonSubtitle']),
                    )
                  ],
                ),
              );
            }).toList(),
          ),
        );
      }
    },
  ),

【问题讨论】:

    标签: firebase flutter google-cloud-firestore stream-builder


    【解决方案1】:

    无法根据另一个(子)集合中的值从一个集合中选择文档。 Firestore 中的查询只能考虑它们返回的文档中的信息。

    如果您想根据成员选择课程,则需要在每个课程文档本身中包含该信息。常见的做法是在每个课程文档中添加一个members数组,对manipulate that array使用arrayUnionarrayRemove操作,然后对query the array使用array-contains

    【讨论】:

      猜你喜欢
      • 2021-08-06
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 2021-12-16
      • 2021-07-17
      相关资源
      最近更新 更多