首页 > 解决方案 > 将所有 firebase 用户列为承诺的代码审查

问题描述

这不是一个关于我所写内容的更多代码审查问题。

我尝试将所有用户代码的 firebase 列表转换为 promise 函数。我想一次性检索所有用户的数组,而不是使用函数回调。

谁能告诉我这是否会因使用过多的内存或其他问题而中断。

我将用户批处理参数保留为 1,以表明异步似乎确实有效。

const userArray = [];

// list all users
const listAllUsers = function (nextPageToken){
  return new Promise((resolve, reject) => {
    admin
      .auth()
      .listUsers(1, nextPageToken)
      .then(async(listUsersResult) => {
        listUsersResult.users.forEach((userRecord) => {
          console.log('user', userRecord.email);
          userArray.push(userRecord.email);
        });
        if (listUsersResult.pageToken) {
          console.log("There is a next page token")
          await listAllUsers(listUsersResult.pageToken);
          resolve();
        } else {
          resolve();
        }
      })
      .catch((error) => {
        console.log('Error listing users:', error);
      });
  });
};

// Start listing users from the beginning, 1000 at a time.
await listAllUsers();
  

标签: node.jsfirebasefirebase-authenticationfirebase-admin

解决方案


嗯......代码将使用至少与用户数量成线性关系的内存量。因此,如果您对用户数量没有限制,您也将无法预测它需要的内存量。

立即跳出来的问题是为什么您需要所有用户的列表?你打算在整个列表上做什么,而你不能在一个用户页面上做?


推荐阅读