首页 > 解决方案 > Firebase admin auth list users 不会返回项目中的所有用户

问题描述

userList 结果只包含一个 userRecord 而所有用户都在 8 左右

corsHandler(request, response, () => {
        admin.auth().listUsers(10, 'token')
            .then((UserListResult) => {

                if (UserListResult.pageToken) { console.log('is found') }
                response.status(200).send(UserListResult)
            })
            .catch(error => response.send(error))
    })

标签: firebase-admin

解决方案


最后,我解决了这个问题。

似乎如果 pageToken 是 null 或无效字符串,它只返回一条记录(基于几个测试,最后一个用户记录)

我改变了我的代码如下,它正在工作

import * as express from 'express'
import * as admin from 'firebase-admin'
import { validate } from '../middleware/auth.middleware';

const router = express.Router()

/** List users */
router.get('/', async (req, res) => {
    let { limit, page } = req.query

    limit = parseInt(limit) || 25;
    page = page === 'null' ? null : page;

    try {
        // Adding a conditional operator here, one with pageToken & other with just limit
        const users: admin.auth.ListUsersResult = page ? await admin.auth().listUsers(limit, page || null) : await admin.auth().listUsers(limit);
        const nextPageToken: string = users.pageToken;

        res.status(200).json({ message: 'Success', users: [...users.users], nextPageToken }).end();
    } catch (err) {
        console.error(err);
        res.status(500).json({ message: 'Internal Server Error' }).end();
    }
});

export { router }

推荐阅读