【问题标题】:cannot retrieve data from firestore flutter无法从 Firestore Flutter 中检索数据
【发布时间】:2021-02-17 09:14:25
【问题描述】:
String branch, semester;



Future<void> _getUserDetails() async {
String uid = FirebaseAuth.instance.currentUser.uid;
await FirebaseFirestore.instance.collection('UserDatabase').doc(uid).get().then((user) {
  setState(() {
    branch = user.data()['Branch'];
    semester = user.data()['Semester'];
  });
});

print(branch);
print(semester);

}

这是我的数据库的快照 firestore snapshot

我正在尝试从 firestore 检索数据,但出现此错误

未处理的异常:NoSuchMethodError:在 null 上调用了方法“[]”。

谁能帮我解决这个错误。

【问题讨论】:

    标签: flutter google-cloud-firestore


    【解决方案1】:

    确保 uid 在 firestore 中作为文档可用

    或者你可以试试下面的代码

      Future<void> _getUserDetails() async {
        String uid = FirebaseAuth.instance.currentUser.uid;
        DocumentSnapshot doc = await FirebaseFirestore.instance.collection('UserDatabase').doc(uid).get();
    
        if(doc.exists) { // this will check availability of document
          branch = doc.data()['Branch'];
          semester = doc.data()['Semester'];
        }else{
          branch = "User is not available";
          semester = "User is not available";
        }
        setState((){});
      }
    

    注册:

    _firestore.collection('UserDatabase').doc(FirebaseAuth.instance.currentUser.uid).set({
     'Branch': branchVal,
    'Email': loggedInUser.email,
    'RollNo': rollNoVal,
    'Semester': semesterVal,
    'Year': yearVal,
    });
    

    【讨论】:

    • 这段代码没有错误......但是在打印“分支和学期”时我得到了空值。我试着把它放在 setState 然后它也是 null
    • 嗨,我已经更新了我的答案,请检查一下
    • 程序流程进入 else 块...知道如何防止这种情况发生吗?
    • 是的,当您注册用户时,请使用 FirebaseAuth.instance.currentUser.uid 作为您的文档 ID。前任。 Firebase.instance.collection("user").doc(FirebaseAuth.instance.currentUser.uid).add({ --});
    • 我在更改注册模块中的代码时收到此错误错误:未为类型“DocumentReference”定义方法“add”。
    【解决方案2】:

    试试这个

    await FirebaseFirestore.instance.collection('UserDatabase').doc(uid).get().then((user) {
    user.docs.forEach((result) {
      branch = result.data()['Branch'];
    semester = result.data()['Semester'];
    });
    

    });

    【讨论】:

    • 错误:没有为类型 'DocumentSnapshot' 定义 getter 'docs'。
    猜你喜欢
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2020-05-16
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    相关资源
    最近更新 更多