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

如何从引用文档(Firebase)中的字段获取字符串数据,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,在我的颤振应用程序中,我希望从包含对另一个集合的引用的字段中获取一些信息。我不知道如何从引用文档中的字段获取信息 下面是这两个系列的两张照片 第一张图片包含字段(“geslacht”)所指的主要集合:“/gender/Girl” 第二张图片显示了引用的集合 我目前已经写了以下文章(如下) 课堂记录{ 最后的字符串名; 颜色变异; 最终文件参考; Record.fromMap(映射映射,{this.reference}) :assert(映射['name']!=null), 断言(map['g

在我的颤振应用程序中,我希望从包含对另一个集合的引用的字段中获取一些信息。我不知道如何从引用文档中的字段获取信息

下面是这两个系列的两张照片

第一张图片包含字段(“geslacht”)所指的主要集合:“/gender/Girl”

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

我目前已经写了以下文章(如下)

课堂记录{
最后的字符串名;
颜色变异;
最终文件参考;
Record.fromMap(映射映射,{this.reference})
:assert(映射['name']!=null),
断言(map['geslacht']!=null),
name=map['name'],
颜色=地图['geslacht'];
Record.fromSnapshot(文档快照快照)
:this.fromMap(snapshot.data,reference:snapshot.reference);
@凌驾
字符串toString()=>“记录”;
}
从名为“name”的字段中获取数据 并为名为“geslacht”的字段返回DocumentReference的实例

我很想得到这一参考文件中的信息。 所以我想得出的结论是“粉色”的价值。(路径应为baby-->dana-->geslacht-->性别-->女孩-->颜色-->粉色)


提前感谢您的帮助

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

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

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>";
}

由于Android Studio没有非常易于使用的变量浏览器,如果我将行更改为color=map['geslacht'].get(),变量的颜色会是什么?对不起,我不太理解你的问题。我不使用flatter,但是对于所有平台,获取()引用文档的需求都是一样的。根据下面的例子,您可以使用getpath()获取路径(作为字符串),我可以将getpath的结果作为'ref'的属性传递吗?该文档是用于本机Android开发的,我相信没有
getpath()
颤振Firestore插件的方法。尽管如此,只要抓取您保存在“baby”文档中的引用,并使用它执行另一个查询,就像我在回答中描述的那样。
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'])
}