Получение данных из массива 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, и я надеюсь, что у кого-то есть знания, чтобы помочь мне и просветить меня!

0 ответов

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