【发布时间】:2020-10-25 18:30:25
【问题描述】:
基本上尝试做一些日常用户管理工作。用户数据库有几千个用户(30 人左右),但由于大小,功能看起来很困难。
我尽可能地简化了函数,是的,我增加了大小和内存限制(540 秒,2 GB)。
也许我做错了什么愚蠢的错误,也许我需要探索不同的解决方案,例如 Cloud Run 或 App Engine 或更大的解决方案。
module.exports = async (data, context) => {
// Get all of the users in the database
const userQuery = await db.collection('users').get()
let authPromises = []
userQuery.forEach(userDoc => {
authPromises.push(
admin.auth().getUser(userDoc.id).then(userResult => {
return {
metadata: userResult.metadata,
...userDoc.data().arrayOfKeysIWant
}
})
)
})
let authResult = await Promise.all(authPromises)
let signInCount = 0
authResult.forEach(user => {
if (user.metadata.lastRefreshTime) {
signInCount += 1
}
})
console.log(signInCount)
return new Promise((res, rej) => {
res({count: authResult.length, signInCount})
})
}
【问题讨论】:
-
如果您真的需要遍历数据库中的每个用户,也许您可以使用a cursor 分块执行此操作?
-
当然,我会试试看
标签: javascript node.js firebase google-cloud-firestore google-cloud-functions