列出具有自定义声明的用户的最佳方式
Best way to list users with customClaims
我只是想在 Firebase 函数
中列出用户
如果 admin (customClaims)
,我只想列出用户
现在我很喜欢这个和它的作品
exports.listAdmins = functions.https.onRequest(async (req, res) => {
cors(req, res, () => {});
const token = req.body.token;
try {
const decodedToken = await admin.auth().verifyIdToken(token);
if (decodedToken) {
let users = [];
const list = async (nextPageToken) => {
await admin.auth().listUsers(1000, nextPageToken).then(async (result) => {
result.users.forEach((userRecord) => {
const user = userRecord.toJSON();
if (user.customClaims && user.customClaims.admin) {
users.push(user);
}
});
if (result.pageToken) {
await list(result.pageToken)
}
})
};
await list()
res.status(200).send({
success: 'SUCCESS',
users: users
});
}
} catch (error) {
res.status(500).send({error: 'SOMETHING_WRONG'});
}
});
但我想知道关于性能 如果我有很多 100000 个用户?
有更好的过滤列表的方法吗?通过使用 admin.auth().listUsers()
?
正如您在 Auth.listUsers() 的 API 文档中看到的那样,只有 listUsers(),没有其他方法可以按任何标准过滤用户。列出许多用户显然是一种昂贵的操作。请考虑将有关您的用户的信息存储在数据库中,然后改为查询数据库。
您还可以file a feature request自由使用您认为任何 Firebase SDK 都缺少的功能。
我只是想在 Firebase 函数
中列出用户如果 admin (customClaims)
,我只想列出用户现在我很喜欢这个和它的作品
exports.listAdmins = functions.https.onRequest(async (req, res) => {
cors(req, res, () => {});
const token = req.body.token;
try {
const decodedToken = await admin.auth().verifyIdToken(token);
if (decodedToken) {
let users = [];
const list = async (nextPageToken) => {
await admin.auth().listUsers(1000, nextPageToken).then(async (result) => {
result.users.forEach((userRecord) => {
const user = userRecord.toJSON();
if (user.customClaims && user.customClaims.admin) {
users.push(user);
}
});
if (result.pageToken) {
await list(result.pageToken)
}
})
};
await list()
res.status(200).send({
success: 'SUCCESS',
users: users
});
}
} catch (error) {
res.status(500).send({error: 'SOMETHING_WRONG'});
}
});
但我想知道关于性能 如果我有很多 100000 个用户?
有更好的过滤列表的方法吗?通过使用 admin.auth().listUsers()
?
正如您在 Auth.listUsers() 的 API 文档中看到的那样,只有 listUsers(),没有其他方法可以按任何标准过滤用户。列出许多用户显然是一种昂贵的操作。请考虑将有关您的用户的信息存储在数据库中,然后改为查询数据库。
您还可以file a feature request自由使用您认为任何 Firebase SDK 都缺少的功能。