dart 从 Flutter 阅读Firestore数据时出错

fsi0uk1n  于 2023-06-19  发布在  Flutter
关注(0)|答案(3)|浏览(151)
getData() async{
    var result = await FirebaseFirestore.instance.collection('users').doc('documentId').get();
    print(result['']);
  }

  @override
  void initState() {
    getData();
    super.initState();
  }

在中,如果result['']中的值为aa1aa,则可以读取数据,但如果为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>

我用aa1aa测试了result['']的值。
我怎么才能打开result['1. email']

sdnqo3pr

sdnqo3pr1#

您会得到这个错误,因为您在字段名称中使用了.(点)字符。请注意,点用作Cloud Firestore文档中存在的Map之间的分隔符。要解决这个问题,请停止在字段名称中使用点。如果您需要某种顺序,那么我建议您更改以下键:

1. email

致:

1_email

你的错误就会消失。
除此之外,我看不到ID设置为documentId的文档。正如@MrShakila在他的回答中提到的那样,为了能够读取文档,您必须将数据库中存在的确切文档ID传递给doc()函数:

var result = await FirebaseFirestore.instance.collection('users').doc('ox...wI').get();
//                                                                       👆
9wbgstp7

9wbgstp72#

在这里使用一个真实的的文档ID而不是word

FirebaseFirestore.instance.collection('users').doc('ox......')//use your id
rnmwe5a2

rnmwe5a23#

您不希望使用包含一些字符的格式来设置字段名,如“.”或空格。这不是数据库字段的正确命名实践。
我认为错误消息告诉它正在寻找一个名为email的字段,这是不存在的字段1的子字段。

相关问题