如何将Firebase Admin SDK listUsers()
功能用作可观察到的RXJS?
我可以在from
上使用listUsers
的RXJS函数返回一个可观察的对象,但是挑战在于listUsers
批量返回用户。这些批次的用户如何检索然后合并?
答案 0 :(得分:0)
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
。