La meilleure façon de la liste des utilisateurs avec customClaims

voix
1

Je viens d' essayer de lister les utilisateurs en fonction Firebase

Et je veux à la liste des utilisateurs seulement si un administrateur (customClaims)

Maintenant, je fais comme ça et son travail

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'});
  }
});

Mais je me demandais sur la performance si j'avais beaucoup de 100000 utilisateurs?

Une meilleure façon de filtrer la liste? à l'aide admin.auth().listUsers()?

Créé 19/12/2018 à 14:16
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
3

Comme vous pouvez le voir dans la documentation de l' API pour Auth.listUsers () , il y a juste listUsers (), et il n'y a pas d' alternative à filtrer les utilisateurs par des critères. Liste de nombreux utilisateurs pourraient évidemment être de nature une opération coûteuse. Pensez à la place stocker des informations sur vos utilisateurs dans une base de données, et d' interroger la base de données au lieu.

Vous êtes également libre de déposer une demande de fonctionnalité pour la fonctionnalité que vous pensez manque de tout SDK Firebase.

Créé 19/12/2018 à 17:08
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more