如何从Firebase文档快照中获取子集合

时间:2020-04-03 05:54:03

标签: flutter google-cloud-firestore

我的firestore数据库的结构如下:

enter image description here

为了显示数据波动,我使用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嵌套?

1 个答案:

答案 0 :(得分:0)

子集合数据不包括在文档快照中。 Firestore查询很浅,仅考虑单个集合中的文档。

如果需要子集合数据,则必须使用事先知道的子集合名称进行新查询。

而且,我要指出的是,您没有在第二个查询中“失去”对documentId的访问权限。它仍在内存中,您可以随意使用它。您还可以浏览父文档和集合以获取所需的ID。