Firebase Admin SDK:如何结合结合递归调用将listUsers()函数用作Observable?

时间:2019-10-07 10:04:33

标签: javascript firebase rxjs firebase-admin

如何将Firebase Admin SDK listUsers()功能用作可观察到的RXJS?

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

1 个答案:

答案 0 :(得分:0)

Firebase Admin SDK函数listUsers可以用返回Observable的函数包装。

然后,可以使用flatMapforkJoin将递归函数调用组合到一个用户数组中。

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