首页 > 解决方案 > FireStore 读取失败,我不知道为什么

问题描述

非常感谢帮助如何追查这个问题,因为我已经没有想法了。

我正在调用下面的函数 getOrderCollection,但它在第一行之后中止,而var myCompanyDoc = await FirebaseFirestore.instance.collection('companies').doc(myCompany).get();在调试时没有向控制台发送任何内容或跳转到某个库。当我单击下一条语句时,它会跳回调用函数。

我通过了数据库的身份验证,companyCollection = FirebaseFirestore.instance.collection('companies')提供了一个指向集合的初始化对象,myCompany 是一个常量,其中包含通过复制/粘贴输入的文档 ID。

如果数据库有一些规则,但我无法通过监视器看到成功或拒绝的查询。

有什么想法可以继续追查问题吗?

  Future<void> getOrderCollection() async {
    var myCompanyDoc = await FirebaseFirestore.instance.collection('companies').doc(myCompany).get();
    print("companyDoc fetched");
    final myDeliveryDocRef = myCompanyDoc.data()['delivery'].toString();
    orderCollection = FirebaseFirestore.instance.collection('companies').doc(myCompany).collection('features').doc(myDeliveryDocRef).collection('orders');
    orderBriefDoc = FirebaseFirestore.instance.collection('companies').doc(myCompany).collection('features').doc(myDeliveryDocRef);
  }

更新:这是集合>文档对应的内容final String myCompany = '4U4kZKXkr3rHA6B04S5K';

在此处输入图像描述

标签: fluttergoogle-cloud-firestore

解决方案


通常,您希望进行一些错误处理并键入已知的类型/类(避免使用var)。

  • 错误处理 - 用于async/await将代码放在try/catch.
  • 打字 - Dart是类型安全的,这对于防止运行时错误非常有用。

根据您的设置,您可以将鼠标悬停在 上Firestore.instance.collection(...).doc(...)以查看返回类型。.doc(...).get()返回 aDocumentSnapshot.collection(...).get()返回 a CollectionSnapshot

使用上面的,应该更容易调试:

 Future<void> getOrderCollection() async {
   try {
     DocumentSnapshot myCompanyDoc = await FirebaseFirestore.instance.collection('companies').doc(myCompany).get();
     print("companyDoc fetched");
     final myDeliveryDocRef = myCompanyDoc.data()['delivery'].toString();

   } catch(e) {
     print('Error: ' + e.toString());
   }
 }

不要忘记await您的其他 2 个 Firestore 查询。


推荐阅读