flutter - 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';
解决方案
通常,您希望进行一些错误处理并键入已知的类型/类(避免使用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 查询。
推荐阅读
- html - CSS 部分对齐
- rest - 谷歌+ REST API。有什么方法可以从 Post 的 URL 获取到 activityId?
- vba - 内容控件如何在重复部分内容控件中被索引?
- jquery - 通过 AJAX 发送的字符串中的 JS 运算符导致请求失败
- python - Hyperledger Sawtooth 输入和输出值
- excel - 将特定单元格数据复制到其他工作表的列中
- asp.net - Pass along Azure AD authentication between apps
- javascript - AngularJS从参数动态ng-model名称
- c# - 我们应该使用实体框架生成的实体吗
- javascript - e.preventDefault() 和 e.stopPropagation() 没有按预期工作