EX:
老师<-1st
馆藏
老师姓名<-馆藏内的文件
类<---集合2
Class1 <-查询此
Class2 <---查询
这个
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class ClassListPage extends StatelessWidget{
@override
Widget build(BuildContext context){
return Material(
child: new StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('Teachers').
where('name', isEqualTo: 'Dr. Who')
//.collection('Classes') <--This is not working
.snapshots(),
//HERE is where I want to query for the 'classes' collection then query
//for the documents within
builder:(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
if(!snapshot.hasData)return new Text('..Loading');
return new ListView(
children: snapshot.data.documents.map((document){
return new ListTile(
title: new ListTile(
title: new Text(document['name']),
),
);
}).toList(),
);
}
),
);
}
}
答案 0 :(得分:2)
在您的问题中,您说您正在使用db.instance.collection('').document('').collection('').snapshot()
,但是在您的代码中,没有调用document()
。这是我看到的:
Firestore.instance
.collection('Teachers')
.where('name', isEqualTo: 'Dr. Who')
.collection('Classes')
.snapshots()
这行不通,因为where()
返回了一个Query,并且Query没有collection()
方法。听起来您需要做的是执行该查询,查看结果集中的文档(可以有任何数字,而不仅仅是1),然后对每个文档的子集合进行另一个查询。