如何从参考文档(Firebase)的字段中获取字符串数据

时间:2019-08-22 15:30:10

标签: firebase flutter dart google-cloud-firestore

在我的Flutter应用程序中,我想从包含对另一个Collection的引用的字段中获取一些信息。我不知道如何从参考文档中的字段中获取信息。

下面是两个集合的两张图片。

第一张图片包含主要集合,其中字段(“ geslacht”)指的是“ / gender / Girl”

Collection 1

第二张图片显示了引用的集合。

Collection 2

我目前写了以下文章(紧随tutorial之后)

class Record {
  final String name;
  var color;
  final DocumentReference reference;
  Record.fromMap(Map<String, dynamic> map, {this.reference})
      : assert(map['name'] != null),
        assert(map['geslacht'] != null),
        name = map['name'],
        color = map['geslacht'];
  Record.fromSnapshot(DocumentSnapshot snapshot)
      : this.fromMap(snapshot.data, reference: snapshot.reference);  
  @override
  String toString() => "Record<$name:$votes>";
}

可以完美地从“名称”字段中获取数据 并为“ geslacht”字段返回DocumentReference的实例

我希望在这份参考文件中获得相关信息。 因此,我想尝试得出的结论是“粉红色”。 (路径将是婴儿-> dana-> geslacht->性别->女孩->颜色->粉红色)

预先感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您将不得不使用该DocumentReference get()来使用另一个文档,就像您自己构建DocumentReference一样。 Cloud Firestore不会自动为您遵循引用-您必须为此编写代码。

答案 1 :(得分:1)

您需要使用该引用来查询数据,目前您只获取第一个文档:

class Record {
  final String name;
  var color;
  final DocumentReference reference;
  Record.fromMap(Map<String, dynamic> map, {this.reference})
      : assert(map['name'] != null),
        assert(map['geslacht'] != null),
        name = map['name'],
        color = map['geslacht'];
  Record.fromSnapshot(DocumentSnapshot snapshot)
      : this.fromMap(snapshot.data, reference: snapshot.reference);  
  @override
  String toString() => "Record<$name:$votes>";
}

您需要做的是执行另一个查询,如下所示:

_getGender(ref) async {
  // ref is '/gender/Girl/' in your case
  var query = await Firestore.instance.document(ref).get();
  print('color is: ' + query.data['color'])
}