Как сделать запрос для каждого элемента в первом HTTP-ответе, используя Rx Js с наблюдаемым редуксом? - PullRequest
0 голосов
/ 08 января 2020

У меня есть два микросервиса (Пользователи и Платежи), я хочу получать пользователей с их платежами. Итак, сначала я выбираю пользователей из Микросервиса пользователей (GET / users /):

[{userId: 1, name: 'john', ...}, {userId: 2, name: 'mark', ...}, {userId: 3, name: 'bob', ...}]

Затем я хочу получить платежи для каждого пользователя. Мне нужно отправить запрос в микросервис платежей (GET / payment / userId)

Ожидаемый результат .-

[
  {userId: 1, name: 'john', ..., payments: [1,2,3]},
  {userId: 2, name: 'mark', ..., payments: [2,3,4]},
  {userId: 3, name: 'bob', ..., payments: [3,4,5]}
]

У меня есть этот код для получения пользователей.

const fetchUsersEpic = action$ =>
  action$.ofType(FETCH_USERS).flatMap(action =>
    Observable.concat(
      Observable.of(actions.loading(true)),
      Observable.fromPromise(usersService.getUsers())
        .flatMap(response =>

          //I need to fetch payments for each user first              

          Observable.concat(
            Observable.of(actions.loading(false)),
            Observable.of(actions.fetchUsersFulfilled(response)),
          ))
        .catch(error => Observable.of(actions.loading(false))),
    ));

1 Ответ

0 голосов
/ 09 января 2020

Ваши услуги возвращают обещание? Вы можете попробовать вот так

Попробуйте вот так:

users = await usersService.getUsers();
users = users.map(user => ({
  ...user,
  payments: await paymentsService.getPayments(user.userId),
}));
...