首页 > 解决方案 > 如何在不指定的情况下在 Firebase 上获取子集合?

问题描述

嘿,伙计们,我在 Firebase 数据库的“词汇”集合下有这些子集合,但我需要在不指定的情况下调用它们,因为它们不止一个,而且它们是从同一页面调用的。除了集合“颜色”之外,是否可以不将其指定为“documentID”而是针对集合?

class CategoryScreen extends StatelessWidget {

final DocumentSnapshot vocabulary;

CategoryScreen(this.vocabulary);

@override
Widget build(BuildContext context) {
return Scaffold(
  body: FutureBuilder<QuerySnapshot>(
    future: Firestore.instance.collection('vocabulary').document(vocabulary.documentID)
    .collection('colors').getDocuments(),
    builder: (context, snapshot){
      if(!snapshot.hasData)
        return Center(
          child: CircularProgressIndicator(),);
      else
        return Column(
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.all(10.0),
              child: Card(
                elevation: 7.0,
                shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(50)
                ),
                child: Column(
                  children: <Widget>[
                    Container(
                        height: 350.0,
                        width: 350.0,
                        decoration: BoxDecoration(
                            image: DecorationImage(
                                image: NetworkImage(vocabulary.data["image"]
                                ),
                                fit: BoxFit.fill),
                            borderRadius: BorderRadius.only(
                                topLeft: Radius.circular(50),
                                topRight: Radius.circular(50)))
                    ),
                    Container(
                      height: 70.0,
                      width: 300.0,
                      child: Padding(
                          padding: const EdgeInsets.all(2.0),
                          child: Center(
                            child: AutoSizeText(vocabulary.data["name"],
                              style: TextStyle(
                                  fontFamily: 'Twiddlestix',
                                  fontSize: 25,
                                  fontWeight: FontWeight.bold),
                              textAlign: TextAlign.center,
                              minFontSize: 15,
                            ),
                          )
                      ),


                    ),

                  ],

                ),
              ),
            ),

          ],
        );
    },

   ),
  );
 }
}

标签: firebasefluttergoogle-cloud-firestore

解决方案


Cloud Firestore 对文档的引用中没有通配符。因此,为了创建查询,您需要知道所有集合名称。如果您只需要根据特定属性获取集合中的某些文档,则必须使用某些字段值作为过滤器进行查询。

除了集合“颜色”之外,是否可以不将其指定为“documentID”而是针对集合?

不,这是不可能的。你不能替代它。


推荐阅读