Функция 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
.