如何映射整个文档子集合的数据并使其在Flutter中成为流?

时间:2020-02-25 18:48:25

标签: flutter dart google-cloud-firestore

我有一个类似于以下内容的Firestore:

enter image description here

我的目标是将天集合->'uid'->集合中的每个条目映射到名为“天”的数据模型,并将其作为流返回给提供者。

此馆藏中的每个条目都有一个日期,其中包含对转移的引用。 这是转移存储:

enter image description here 这是Day数据模型:

class Day {
  Day({this.date, this.transfers});

  final String date;
  final List<Transfer> transfers;
}

这是我尝试过的代码(目前缺少对转帐清单的反序列化,但是此时我迷路了):

  Stream<List<Day>> get dayTransferData {
    return daysCollection.document('QeG5SgSoYPXCpPkU86Z9ReShr2j2').collection('').snapshots().map(_brewListFromSnapshot);
  }

  List<Day> _brewListFromSnapshot(QuerySnapshot snapshot) {
    return snapshot.documents.map((doc) {
      return Day(
        date: doc.documentID,
        transfers: doc.data.values,
      );
    }).toList();
  }

我搜索了stackoverflow,但每个人都按名称引用了该集合。

如何获取集合的数据并以正确的方式映射?

1 个答案:

答案 0 :(得分:0)

具有JSON转换的用户类:JSON and serialization

class User {
  String name;
  int age;

  User({
    this.name,
    this.age,
  });

  factory User.fromJson(String str) => User.fromMap(json.decode(str));

  String toJson() => json.encode(toMap());

  factory User.fromMap(Map<String, dynamic> json) => User(
        name: json["name"],
        age: json["age"],
      );

  Map<String, dynamic> toMap() => {
        "name": name,
        "age": age,
      };
}

创建用户列表:

users = jsonList.map((json) => User.fromJson(json)).toList();