我手动向FiRestore集合添加了一个文档,并复制/粘贴了当前用户的ID作为其ID,并向该文档添加了一个字段和一个相应的数据值.

在此之后,我try 检索我添加的文档,但没有成功,第一个绊脚点是FiRestore返回该文档不存在.

在这个问题上,我感兴趣的是如何才能让FiRestore返回关于该文档的存在的"真".

final _grocerData = FirebaseFirestore.instance.collection('grocers/{abc1}/fruits/{abc2}/apples/');

集合引用的定义如下.

enter image description here

图像是为了确认文档的存在.

enter image description here

为避免任何疑问,请参阅完整的文件收集参考.

Future<void> getData() async {
  final document = await _grocerData.doc(_auth.currentUser!.uid).get();
  if (document.exists) {
    print('Hooray!  The document was found!');
  } else {
    print('Boohoo!  Firestore cannot find the specified document');
    print('The current-user\'s ID: ${_auth.currentUser!.uid}');
  }
}
I/flutter (20975): Boohoo!  Firestore cannot find the specified document
I/flutter (20975): The current-user's ID: cGr1Fh8d9PgI9VJ2UzbeBVmRbhk2

该方法包含一个引用,该引用特别指向已创建的文档(文档的ID是当前用户的ID).

尽管如此,FiRestore通过 Select 与If-Do-Not-Exist相关联的If-route来声明文档不存在.

因此,我的问题是为什么,以及如何纠正这一点?

推荐答案

您无法阅读该文档,因为您使用的文档引用不正确:

final _grocerData = FirebaseFirestore.instance.collection('grocers/{abc1}/fruits/{abc2}/apples/');

不能使用通配符创建引用.因此,为了能够创建对子子集合中存在的文档的引用,您需要提前知道所有集合和文档的名称.因此,您的引用应该如下所示:

final _grocerData = FirebaseFirestore.instance
                                     .collection("grocers")
                                     .doc("FhLH...X7us")
                                     .collection("fruits")
                                     .doc("alWS...2xy6")
                                     .collection("apples")
                                     .doc("cGr1...bhk2");

看,在这个文档引用对象中,我已经指定了所有集合的名称和所有文档的ID,就像我在屏幕截图中看到的那样.现在,您可以阅读文档并获得所需的结果:

Hooray! The document was found!

Flutter相关问答推荐

如何在列表磁贴上添加行

如何将图像从顶部和底部半向外设置为飘动

与FTPS连接时出现Flutter FTPConnect HandshakeException错误

我怎样才能go 掉这个底部导航栏上的白色背景

当 Dart SDK 版本范围不匹配时,为什么依赖解析器不会抛出错误?

如何从flutter中不同类别的列表中获取所有产品

NotifierProvider 每次更新都会重新构建并且值不更新

Flutter:注册 UI 出现 UI 问题(将注册框提升到顶部并向电话号码 pin 码添加一个框)

没有为类型 'Widget' 定义运算符 '[]' .try 定义运算符[]

如何动态获取任何小部件的像素?

如何在android中 Select 任何文件/文件路径 - Flutter

Paypal 支付网关添加带有 magento 2 网络详细信息用户名、密码、签名 Magento 2 的 flutter 应用程序?

转换函数上传文件上传Uint8List

Agora VideoCall 不显示远程视频网格

如何(部分)更新 riverpod 中的 AsyncValue?

是否有可能减少代码的编写,例如:ref.read(countProvider.notifier) - 在构建方法中?

graphql_flutter 错误:非抽象类GraphQLWebSocketChannel缺少实现

扫描flutter生成的二维码后如何弹出文本字段值

主题:ThemeData() Flutter

无法列出 com.facebook.android:facebook-login -Facebook 登录问题的版本