Как сделать параллельные запросы в Sag Redux в цикле карты массива в FireBase? - PullRequest
1 голос
/ 02 октября 2019

Итак, у меня есть массив идентификаторов пользователей. Я хочу получить данные о них из коллекции. Это кусочек саги:

 const fetchedMembers = yield all(tasksObject[task].members.map( member => {
//member has id of user!
              const user = call(() => db.collection('users').doc(member).get())
              const userData = user.data()
              return {
                uid: member,
                ...userData
              }
            }))

Но у меня есть ошибка в моем коде. Как правильно это пишется?

1 Ответ

0 голосов
/ 03 октября 2019

Массив, переданный yield all, должен быть массивом эффектов. Если вы немного измените рефакторинг, вы можете сделать что-то вроде:

// define this helper generator
function* fetchMember(member) {
  // note the addition of the `yield` here before `call`
  const user = yield call(() => db.collection('users').doc(member).get())
  const userData = user.data()
  return {
    uid: member,
    ...userData
  }
}

...

 const fetchedMembers = yield all(tasksObject[task].members.map(
   // the array being passed to `yield all` is now an array of `call` effects
   member => call(fetchMember, member)
 ));

...