Как получить документы из разных коллекций в Firestore внутри Redux Saga - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть следующая сага:

export function* fetchAnalyticsData() {
  try {
    const data = [];
    const collectionReference = firestore.collection("collection1")
    const UIDSreference = yield collectionReference.get();
    // getUID is a function that returns an array of UIDS of documents of collection1
    const UIDS = yield call(getUID, collectionReference);
    const populate = yield all(
      UIDS.map((uid) => {
        firestore
          .collection("collection1")
          .doc(uid)
          .collection("collection2")
          .get()
          .then((response) => {
            if (response.docs.length) {
              response.docs.forEach((doc) => data.push(doc.data()));
              console.log(data);
            }
          });
      })
    );
    console.log(data);
    yield put(fetchAnalyticsDataSuccess(data));
  } catch (error) {
    console.log(`Error in fetchAnalyticsData: ${error}`);
    yield put(fetchAnalyticsDataFailure(error.message));
  }
}

Внутренний console.log(data) печатает массив data, правильно заполненный. Однако внешний console.log(data) печатает пустой массив. Я знаю, что это обещания, но как я могу решить эту проблему?

...