getData() async{
var result = await FirebaseFirestore.instance.collection('users').doc('documentId').get();
print(result['']);
}
@override
void initState() {
getData();
super.initState();
}
在中,如果result['']
中的值为aa
或1aa
,则可以读取数据,但如果为1.aa
,则无法读取数据。我该怎么解决这个问题?
error code is [VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: Bad state: field does not exist within the DocumentSnapshotPlatform
#0 DocumentSnapshotPlatform.get._findKeyValueInMap (package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_document_snapshot.dart:87:7)
#1 DocumentSnapshotPlatform.get._findComponent (package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_document_snapshot.dart:105:23)
#2 DocumentSnapshotPlatform.get (package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_document_snapshot.dart:121:12)
#3 _JsonDocumentSnapshot.get (package:cloud_firestore/src/document_snapshot.dart:92:48)
#4 _JsonDocumentSnapshot.[] (package:cloud_firestore/src/document_snapshot.dart:96:40)
#5 _jiujitsu_CalState.getData (package:el_sports/JiuJitsu_Page/jiujitsu_cal_page.dart:18:17)
<asynchronous suspension>
我用aa
和1aa
测试了result['']
的值。
我怎么才能打开result['1. email']
?
3条答案
按热度按时间sdnqo3pr1#
您会得到这个错误,因为您在字段名称中使用了
.
(点)字符。请注意,点用作Cloud Firestore文档中存在的Map之间的分隔符。要解决这个问题,请停止在字段名称中使用点。如果您需要某种顺序,那么我建议您更改以下键:致:
你的错误就会消失。
除此之外,我看不到ID设置为
documentId
的文档。正如@MrShakila在他的回答中提到的那样,为了能够读取文档,您必须将数据库中存在的确切文档ID传递给doc()
函数:9wbgstp72#
在这里使用一个真实的的文档ID而不是word
rnmwe5a23#
您不希望使用包含一些字符的格式来设置字段名,如“.”或空格。这不是数据库字段的正确命名实践。
我认为错误消息告诉它正在寻找一个名为
email
的字段,这是不存在的字段1
的子字段。