在我的Flutter应用程序中,我想从包含对另一个Collection的引用的字段中获取一些信息。我不知道如何从参考文档中的字段中获取信息。
下面是两个集合的两张图片。
第一张图片包含主要集合,其中字段(“ geslacht”)指的是“ / gender / Girl”
第二张图片显示了引用的集合。
我目前写了以下文章(紧随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->性别->女孩->颜色->粉红色)
预先感谢您的帮助!
答案 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'])
}