繁体   English   中英

如何从子集合文档中获取数据,firestore(Flutter)

[英]How to get data from subCollection document, firestore(Flutter)

我在 firebase 中有一个数据集合。 它有用户数据文档,每个文档都包含一个称为 GPA 的集合。 在 GPA 集合中有 8 个文档,我想从一个名为 sem1 的文档中获取数据,这是我的 getData function。 但它不起作用请给我一个解决方案。

_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()是一个异步调用,因此您要么必须await填充docId要么在getDocuments().then()中执行所有操作。 我会推荐后者,它可能看起来像这样:

_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);
                        });
        });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM