Flutter / Firestore - 我如何获取子集合用户标识中等于当前用户的集合
Flutter / Firestore - How can i fetch collection in subcollection userid equal to currentuser
这里是我的 Firestore 结构,
我想获取课程 data.But 只有成员中具有相同用户 ID 的用户 collection.But 我不能。
这是最糟糕的用法吗?
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(),
),
);
}
},
),
无法根据另一个(子)集合中的值从一个集合中 select 文档。 Firestore 中的查询只能考虑它们返回的文档中的信息。
如果您想 select 基于成员的课程,您需要在每个课程文档本身中包含该信息。常用的方法是在每个课文中添加一个members
数组,使用arrayUnion
和arrayRemove
操作对manipulate that array, and then use array-contains
to query the array.
这里是我的 Firestore 结构,
我想获取课程 data.But 只有成员中具有相同用户 ID 的用户 collection.But 我不能。 这是最糟糕的用法吗?
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(),
),
);
}
},
),
无法根据另一个(子)集合中的值从一个集合中 select 文档。 Firestore 中的查询只能考虑它们返回的文档中的信息。
如果您想 select 基于成员的课程,您需要在每个课程文档本身中包含该信息。常用的方法是在每个课文中添加一个members
数组,使用arrayUnion
和arrayRemove
操作对manipulate that array, and then use array-contains
to query the array.