Firebase 使用文档和集合查询Flatter Firestore
我有一个firestore db和一个Flatter应用程序。数据库如下所示:Firebase 使用文档和集合查询Flatter Firestore,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我有一个firestore db和一个Flatter应用程序。数据库如下所示: Collection Doc Collection scans uid:DateTime.now() userID: 'abjnbj28snOPEAJd', scanID: 'test', data: 'abc', company: 'TH' uid:DateTime.now() userID: 'nj12djaJDJa
Collection Doc Collection
scans uid:DateTime.now() userID: 'abjnbj28snOPEAJd', scanID: 'test', data: 'abc', company: 'TH'
uid:DateTime.now() userID: 'nj12djaJDJaihinf', scanID: 'test2', data: 'xyz', company: 'PH'
FirebaseFirestore.instance
.collection('scans')
.doc(user.uid)
.get()
我不在用户集合中的文档中存储数据的原因是,我需要公司的管理员能够访问所有扫描,而不管根据公司名称扫描的是哪个用户。
我之所以使用uid:DateTime.now()是因为每个文档(扫描)都应该是唯一的
问题:
FutureBuilder(
future: FirebaseFirestore.instance
.collection('scans')
.orderBy('dateTime', descending: true)
.limit(10)
.where('userID', isEqualTo: user.uid)
.get()
builder: (context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
} else {
print(snapshot.data['userID'];
});
您可以将用户id用作文档id,然后要按用户id进行筛选,可以执行以下操作:
Collection Doc Collection
scans uid:DateTime.now() userID: 'abjnbj28snOPEAJd', scanID: 'test', data: 'abc', company: 'TH'
uid:DateTime.now() userID: 'nj12djaJDJaihinf', scanID: 'test2', data: 'xyz', company: 'PH'
FirebaseFirestore.instance
.collection('scans')
.doc(user.uid)
.get()
要按公司筛选,可以使用where
子句:
FirebaseFirestore.instance
.collection('scans')
.where('company', isEqualTo: 'TH')
.get()
您可以将用户id用作文档id,然后要按用户id进行筛选,可以执行以下操作:
Collection Doc Collection
scans uid:DateTime.now() userID: 'abjnbj28snOPEAJd', scanID: 'test', data: 'abc', company: 'TH'
uid:DateTime.now() userID: 'nj12djaJDJaihinf', scanID: 'test2', data: 'xyz', company: 'PH'
FirebaseFirestore.instance
.collection('scans')
.doc(user.uid)
.get()
要按公司筛选,可以使用where
子句:
FirebaseFirestore.instance
.collection('scans')
.where('company', isEqualTo: 'TH')
.get()
我尝试了这个,但它向我显示了错误:类“QuerySnapshot”没有实例方法“[]”。您必须执行以下
QuerySnapshot.docs.forEach((result){print(result.data());})
,querySnapshot类有一个名为docs
的字段,用于在未来构建器中的集合中的所有文档中循环?我尝试了这个,但它显示了错误:类“querySnapshot”没有实例方法“[]”。您必须执行以下querySnapshot.docs.forEach((结果){print(result.data();})
,querySnapshot类有一个名为docs
的字段,用于在未来构建器中集合中的所有文档中循环?