在flutter中使用.where后如何获取子集合

时间:2019-04-08 21:48:53

标签: android firebase flutter google-cloud-firestore

我想知道使用.where

后是否有一种获取子集合的方法

这是我的数据库格式

  • 用户<-集合
  • Bob123
  • 帖子<-子集合
  • post1

Firestore.instance.collection("Users")
.where("followers", arrayContains: id)  //id is the users id 
//He i want to get the collection of posts that the particular user has posted

2 个答案:

答案 0 :(得分:1)

子集合在单个文档下,而查询则标识一组文档。如果您知道查询仅标识一个文档,则Firestore客户端不知道,即使可以,也不知道该文档的完整路径。

首先需要执行查询,然后获取单个文档,然后可以获取每个文档的子集合。

答案 1 :(得分:0)

我想做类似的事情-

事件-> widget.mydatahere(文档)-> eventFood(子集合)-> selectedFood(子集合中的文档)-> selectedFoodRecipe(foodRecipe的值)。

这将使其正常工作,但是,这里的问题是,即使setstate,也不会更新ui,控制台日志正常,但是ui不会更新。

Future<String> loadmyFoodItem() async {

await Firestore.instance
    .collection('Events')
    .where("eventName", isEqualTo: widget.mydatahere)
    .getDocuments()
    .then((onValue){
  onValue.documents.forEach((f){

    Firestore.instance.collection('Events').document(f.documentID)
        .collection('eventFood')
        .where('foodName', isEqualTo: selectedFood)
        .getDocuments()
        .then((querySnapshot){
        querySnapshot.documents.forEach((result){

            selectedFoodRecipe = result.data['foodRecipe'];
            print("selectedFoodRecipe $selectedFoodRecipe");

      });
    });
  });
});

return 'ready';
}