Как получить подколлекцию после использования .where во флаттере

Мне было интересно, есть ли способ получить подколлекцию после использования .where

Это мой формат базы данных

  • Пользователи <-- коллекция
  • Боб123
  • сообщения <-- подколлекция
  • пост1

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
2 215
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Подколлекции находятся в отдельном документе, а запрос идентифицирует группу документов. Если вы знаете, что запрос идентифицирует только один документ, клиент Firestore не знает об этом, и даже если бы он знал, он не знает полного пути к этому документу.

Сначала вам нужно выполнить запрос, затем получить отдельные документы, а затем вы можете получить подколлекцию каждого документа.

Я пытаюсь сделать что-то подобное -

События -> widget.mydatahere (документ) -> eventFood (подколлекция) -> selectedFood (документ в подколлекции) -> selectedFoodRecipe (значение foodRecipe).

Это заставит его работать, однако проблема здесь в том, что даже setstate не обновит пользовательский интерфейс, журналы консоли в порядке, но пользовательский интерфейс не обновляется.

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';
}

Другие вопросы по теме