Najlepszym sposobem do listy użytkowników z customClaims

głosy
1

Właśnie próbuje do listy użytkowników w funkcji Firebase

I chcę, aby wymienić tylko użytkownikom, jeżeli administrator (customClaims)

Teraz robię tak i swojej pracy

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

Ale zastanawiałem się, o wydajności gdybym miał wiele 100000 użytkowników?

Lepszy sposób, aby filtrować listę? za pomocą admin.auth().listUsers()?

Utwórz 19/12/2018 o 14:16
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
3

Jak widać z dokumentacji API dla Auth.listUsers () istnieje tylko Listusers (), i nie ma alternatywy do filtrowania użytkownikom dowolnych kryteriów. Sprzedaż wielu użytkowników mogło oczywiście być rodzajem drogiej operacji. Rozważmy zamiast przechowywania informacji o użytkownikach w bazie danych i zapytań do bazy danych zamiast.

Jesteś również swobodnie złożyć żądanie funkcji dla funkcji, które uważasz brakuje jakiejkolwiek Firebase SDK.

Odpowiedział 19/12/2018 o 17:08
źródło użytkownik

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