Firebase 如何从子集合文档firestore(Flatter)获取数据
我在firebase收集数据。 它有用户数据文档,每个文档都包含一个名为GPA的集合。 在GPA集合中有8个文档,我想从其中一个名为sem1的文档中获取数据 这是我的getData函数。但它不起作用 请给我一个解决办法Firebase 如何从子集合文档firestore(Flatter)获取数据,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我在firebase收集数据。 它有用户数据文档,每个文档都包含一个名为GPA的集合。 在GPA集合中有8个文档,我想从其中一个名为sem1的文档中获取数据 这是我的getData函数。但它不起作用 请给我一个解决办法 _getData() async { { var docID; var firebaseUser = await FirebaseAuth.instance.currentUser(); final databaseReference
_getData() async {
{
var docID;
var firebaseUser = await FirebaseAuth.instance.currentUser();
final databaseReference = Firestore.instance;
databaseReference
.collection("users")
.where('uid', isEqualTo: firebaseUser.uid)
.getDocuments()
.then((querySnapshot) {
docID = querySnapshot.documents[0].reference.documentID;
});
var query = databaseReference
.collection('users')
.document(docID)
.collection('GPA')
.document(sem1)
.get()
.then((DocumentSnapshot ds) {
print(ds.data);
});
}
}
问题是,您正在尝试在填充
docID
之前使用它,因为getDocuments()
是一个异步调用,所以您要么等待来填充docID
,要么在getDocuments()内执行所有操作。然后()
。我推荐后者,它可以是这样的:
_getData() async {
var docID;
var query;
var firebaseUser = await FirebaseAuth.instance.currentUser();
final databaseReference = Firestore.instance;
databaseReference
.collection("users")
.where('uid', isEqualTo: firebaseUser.uid)
.getDocuments()
.then((querySnapshot) {
docID = querySnapshot.documents[0].reference.documentID;
query = databaseReference
.collection('users')
.document(docID)
.collection('GPA')
.document(sem1)
.get()
.then((DocumentSnapshot ds) {
print(ds.data);
});
});
}