Javascript Firebase Admin SDK:如何使用listUsers()函数作为可观察的递归调用组合?

Javascript Firebase Admin SDK:如何使用listUsers()函数作为可观察的递归调用组合?,javascript,firebase,rxjs,firebase-admin,Javascript,Firebase,Rxjs,Firebase Admin,如何使用Firebase Admin SDK函数作为RXJS可观察对象 我可以使用listUsers上的fromRXJS函数返回一个可观察的,但挑战在于listUsers批量返回用户。如何检索并合并这些用户批?Firebase Admin SDK函数可以使用返回可观察的函数包装 然后可以使用flatMap和forkJoin将递归函数调用组合到一个用户数组中 import { forkJoin, from, of } from 'rxjs'; import { flatMap, map } fro

如何使用Firebase Admin SDK函数作为RXJS可观察对象


我可以使用
listUsers
上的
from
RXJS函数返回一个可观察的,但挑战在于
listUsers
批量返回用户。如何检索并合并这些用户批?

Firebase Admin SDK函数可以使用返回可观察的
函数包装

然后可以使用
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

Firebase Admin SDK函数可以使用返回
可观察值的函数包装

然后可以使用
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

@Curse:我已经阅读了本页,但是没有关于如何将listUsers()函数用作可观察对象的信息,是吗?@Curse:我已经阅读了本页,但是没有关于如何将listUsers()函数用作可观察对象的信息,是吗?