当前位置: 首页 > 知识库问答 >
问题:

使用流从FireStore获取数据并将其映射到类flift

侯向文
2023-03-14

我试图反序列化数据从火力还原映射到一个新的类,并使用提供商调用该类。我遵循了几个教程(https://fireship.io/lessons/advanced-flutter-firebase/)没有成功。

///auth_class.dart
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class UserCheck extends ChangeNotifier {
  final _auth = FirebaseAuth.instance;
  FirebaseUser loggedInUser;

  var userDetails;
  final String id;
  String firstName;
  final String lastName;
  final String userEmail;
  final String userOrg;
  final Timestamp regDate;
  final String date;

  UserCheck({
    this.id,
    this.firstName,
    this.lastName,
    this.userEmail,
    this.userOrg,
    this.regDate,
    this.date,
  });

  factory UserCheck.fromSnap(DocumentSnapshot ds) {
    Map data = ds.data;

    return UserCheck(
      id: ds.documentID,
      firstName: ds['fname'] ?? '',
      lastName: data['lname'] ?? '',
      userEmail: data['regEmail'] ?? '',
      userOrg: data['org'] ?? '',

    );
  }

然后我试着打电话给使用

//database_service.dart

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:oast_app/widgets/auth_class.dart';

class DatabaseService {

    Stream<List<UserCheck>> streamUser(FirebaseUser user){
    var ref = Firestore.instance.collection('users').document('${user.uid}').snapshots();
    return ref.map((list) => {
      return list.data.map((ds) => UserCheck.fromSnap(ds)).toList()
    });
    }
}

错误消息:

共有2个答案

曹鹏海
2023-03-14

您需要使用. data();来实际获取文档数据,而不是使用. data();

但是,您可以使用直接获取Firestore映射的每个值。数据()。映射['[字段名称]]

正如前面所述,firstName的部分应该是data['fname']。

邢冷勋
2023-03-14

只是猜测,不应该你下面的代码;

firstName: ds['fname'] ?? '',

firstName: data['fname'] ?? '',

相反

 类似资料:
  • 我正在开发Spring Boot应用程序与Spring Data JPA和H2数据库。我使用的是sping-data-jpa。当我使用ManyTo很多映射器类来获取另一个类的数据时。但是我发现它是NULL。 代码在github上 书班 著者班 测试中的测试代码捕捉器。班 我的代码有错误吗?或者其他方式? 非常感谢。

  • 我需要从firestore中的以下数据结构中获取formName和id的数据。在这种情况下,如何获取数据,比如创建嵌套对象?

  • 我正在使用云Firestore作为我的Ionic/Cordova应用程序的数据库。 我的问题是试图从Firestore数据库中“获取”存储的数据,并在我的“计算函数”中使用它们。 我在Firestore中的数据库结构如下: 我当前的代码能够从Firestore中检索/获取数据,但是我还不能利用这些数据,因为我找不到这样做的方法。 获取数据功能:

  • 早上好,我需要获取谷歌生成的数据。从JSON映射距离和时间,文档中的地址是: https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial 使用我的api进行设置,并传递我得到的两个随机方向,并显示距离和时间: 到目前为止还不错,现在开始地址和结束地址不是静态的,在这个例子中,我之前放的总是相同的数据,我需要数据是动

  • Java中有一个类DepartmentPerson,我在Hibernate中映射了一个映射,如下所示: 在类中,我将acceptByPeriod定义为: 每当我在DepartmentPerson上运行查询时,都会收到消息:“java.lang.IllegalArgumentException:参数类型不匹配”。这与acceptByPeriod映射有关,因为当我删除它时,问题就消失了。数组tbl\u