node.js - 将所有 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();
解决方案
嗯......代码将使用至少与用户数量成线性关系的内存量。因此,如果您对用户数量没有限制,您也将无法预测它需要的内存量。
立即跳出来的问题是为什么您需要所有用户的列表?你打算在整个列表上做什么,而你不能在一个用户页面上做?
推荐阅读
- python - 如何使用 Selenium 和 Python 从下拉菜单中选择一个选项
- mathematical-optimization - 对于哪些类型的问题,遗传算法是合适的选择?
- regex - 正则表达式不允许没有空格的连续字符
- python - 如何将for循环的输出保存到python中的列表?
- wordpress - 我的 wordpress 子主题不应用 css 更改
- c - 使用信号中断主线程
- uml - 我不懂关联类——UML类图
- javascript - Reactjs 根据 url 更新组件的最佳实践
- android - React Native v5,Android 9 - 未触发触摸事件
- python - 如何根据第一列在数据框中填充数据