Firebase Admin SDK: Как использовать функцию listUsers () как Observable, объединяющую рекурсивные вызовы? - PullRequest
1 голос
/ 07 октября 2019

Как использовать Firebase Admin SDK listUsers() в качестве наблюдаемой RXJS?

Я могу использовать from функцию RXJS для listUsers, чтобы вернуть наблюдаемую, но вызовявляется то, что listUsers возвращает пользователей в пакетном режиме. Как можно было получить эти группы пользователей, а затем объединить их?

1 Ответ

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

Функция Firebase Admin SDK listUsers может быть обернута функцией, которая возвращает Observable.

Тогда flatMap и forkJoin можно использовать для объединениярекурсивные вызовы функций в одном массиве пользователей.

import { forkJoin, from, of } from 'rxjs';
import { flatMap, map } from 'rxjs/operators';


function myListUsers(maxResults = 1000, pageToken = null) {
  return from(admin.auth().listUsers(1000, pageToken));
}


function listAllUsers(nextPageToken) {
  myListUsers(1000, nextPageToken).pipe(
    flatMap(listUsersResult => forkJoin([
      of(listUsersResult.users),
      listUsersResult.pageToken ? listAllUsers(listUsersResult.pageToken) : of(null)
    ])),
    map( ([userList1, userList2]) => [...userList1, ...userList2])
  )
}


listAllUsers().subscribe(
  allUsers => console.log(allUsers);
)

Обратите внимание, что последняя запись массива будет null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...