首页 > 解决方案 > 更新 Flutter Firebase 后收到 Bad State: field does not exist - QueryDocumentSnapshot

问题描述

在更新之前,如果 document['field'] 不存在,它将导致 null。现在它会抛出一个 Bad State 错误。需要 null 响应,因为该字段在 Firebase 集合中的某些历史数据和/或可选数据中不存在。在以下报告中也证实了这一点:

https://github.com/FirebaseExtended/flutterfire/issues/3826

有没有办法捕获错误并忽略它或将其设置为 null 或空字符串?

 static Pool dataFromDocument(QueryDocumentSnapshot document) {
  return Pool()
    ..authUID = document.get('authUID')
    ..documentID = document.id
    ..propertyManagerID = document['propertyManagerID'] as String
 }

    static Stream<QuerySnapshot> getData(String authUID) {
CollectionReference poolRef = FirebaseFirestore.instance.collection(dataDB);
Query query = poolRef.where('authUID', isEqualTo: authUID.trim());
return query.snapshots();
}
 

标签: firebaseflutter

解决方案


具有空安全性,String不可为空。然而,String?是。

换行:

..propertyManagerID = document['propertyManagerID'] as String

至:

..propertyManagerID = document['propertyManagerID'] as String?

Pool还必须在类定义中将该属性propertyManagerID作为 a 。String?


推荐阅读