我的firestore数据库的结构如下:
为了显示数据波动,我使用streambuilder,如下所示:
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('myCollection').snapshots(),
builder: (context, snapshot) {
return Container(
child: ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (BuildContext context, int index) =>
_buildListItem(context, snapshot.data.documents[index]),
),
);
}),
Widget _buildListItem(BuildContext context, DocumentSnapshot document) {
return ListTile(
title: Row(
children: <Widget>[
Text(document.documentID),
Spacer(),
Text(document['allocatedSource'].toString()),
],
),
我如何像这样访问子集合: 字幕:文本(document.documentID.collection('post')。document)。
如果我声明流如下,我可以访问它:
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance
.collection('myCollection')
.document(documentId)
.collection('post')
.snapshots(),...
,但随后我将失去对集合中documentID的访问权限。 我应该声明2个流还是将streambuilder嵌套?
答案 0 :(得分:0)
子集合数据不包括在文档快照中。 Firestore查询很浅,仅考虑单个集合中的文档。
如果需要子集合数据,则必须使用事先知道的子集合名称进行新查询。
而且,我要指出的是,您没有在第二个查询中“失去”对documentId
的访问权限。它仍在内存中,您可以随意使用它。您还可以浏览父文档和集合以获取所需的ID。