首页 > 解决方案 > 如何解决“没有为类型'DocumentSnapshot'定义吸气剂'docs'。”?

问题描述

伙计们,当我尝试收听文档更改时,我在 Firebase 更新方面遇到了一点麻烦,在我的情况下,它是event.docs,它说The getter 'docs' isn't defined for the type 'DocumentSnapshot'。检查了迁移指南,但无法找到对代码的修改。

这是我的代码:

  void _listenToOrders() {
     _subscription = userOrdersRef.doc(authUser.id).snapshots().listen((event) {
     orders.clear();
     for (final doc in event.docs) {
          orders.add(Order.fromDocument(doc));
      }

      print(orders);
    });
   }

你们知道访问这些文件的新方法是什么吗?

标签: firebasefluttergoogle-cloud-firestore

解决方案


错误消息告诉您这event是一个DocumentSnapshot类型的对象。正如您从链接的 API 文档中看到的那样,它没有名为“docs”的属性。它不是QuerySnapshot(它确实有零个或多个“文档”)。DocumentSnapshot 仅包含一个文档:您在userOrdersRef.doc(authUser.id).

由于您只会从 DocumenSnapshot 列表器中获取一个文档,因此无需尝试迭代任何内容。只需按原样使用 DocumentSnapshot。

  void _listenToOrders() {
     _subscription = userOrdersRef.doc(authUser.id).snapshots().listen((snapshot) {
     orders.clear();
     orders.add(Order.fromDocument(snapshot));
     print(orders);
  }

推荐阅读