Получение данных из массива DocumentReferences в Firestore/Flutter
В настоящее время я настраиваю пользовательский документ в Firestore для проекта Flutter Redux. У каждого пользователя есть полевые карты, представляющие собой массив DocumentReferences, однако у меня возникают проблемы с получением данных в Dart. Мне нужно вернуть все ссылочные документы в виде списка CardEntities в виде потока, но мне трудно понять, как я собираюсь это сделать. Все, что я пробовал, либо приводило к исключениям
Пользовательский документ настроен так:
/user
- cards (array of document references)
- id (string)
...
и каждый карточный документ настроен так:
/card
- id (string)
- imageUrl (string)
...
Мое промежуточное ПО выглядит так:
return (store, action, next) {
next(action);
repository.cards(action.userId).listen((cards) {
store.dispatch(LoadCardsAction(cards.map(Card.fromEntity).toList()));
});
}
В настоящее время я получаю все документы из коллекции / cards следующим образом:
Stream<List<CardEntity>> cards(String userId) {
return firestore.collection(cardsPath).snapshots().map((snapshot) {
return snapshot.documents.map((data) {
return CardEntity(
data.documentID,
...
);
}).toList();
});
}
Я думаю, что решение будет что-то вроде:
Stream<List<CardEntity>> cards(String userId) {
return firestore.collection(usersPath).document(userId).snapshots().map((snapshot) {
var refs = List<DocumentReference>.from(snapshot.data['cards']);
refs.forEach((doc) {
return doc.snapshots().map((data) {
return CardEntity(
data.documentId,
...
);
}
}
}
}
Я либо не отвечаю требованиям типа возврата
Stream<List<CardEntity>>
или я получаю ошибки типа
type 'String' is not a subtype of type 'DocumentReference'
как в случае моего "предложенного" решения.
Я, очевидно, новичок в Streams в целом, особенно в Dart, и я надеюсь, что у кого-то есть знания, чтобы помочь мне и просветить меня!