【发布时间】:2021-08-08 07:49:20
【问题描述】:
我正在尝试编写一个云函数来删除 5 月 16 日创建的所有用户帐户,但它不起作用。 难道我做错了什么?调试非常困难,因为我只能在部署时进行测试。
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
const listAllUsers = (nextPageToken) => {
var allUsers = [];
// List batch of users, 1000 at a time.
admin
.auth()
.listUsers(1000, nextPageToken)
.then((listUsersResult) => {
listUsersResult.users.forEach((userRecord) => {
if (userRecord.metadata.creationTime.includes("May 16")) {
allUsers.push(userRecord.uid);
}
});
admin
.auth()
.deleteUsers(allUsers)
.then((deleteUsersResult) => {
console.log(`Successfully deleted ${deleteUsersResult.successCount} users`);
console.log(`Failed to delete ${deleteUsersResult.failureCount} users`);
deleteUsersResult.errors.forEach((err) => {
console.log(err.error.toJSON());
});
})
.catch((error) => {
console.log('Error deleting users:', error);
});
if (listUsersResult.pageToken) {
// List next batch of users.
listAllUsers(listUsersResult.pageToken);
}
})
.catch((error) => {
console.log('Error listing users:', error);
});
};
// Start listing users from the beginning, 1000 at a time.
exports.clean = functions.https.onRequest((req, res) => {
listAllUsers();
});
我认为问题可能与这条线有关,但我该如何调试呢?
userRecord.metadata.creationTime.includes("May 16")
这是我在运行函数时在 firebase 上得到的控制台输出:
2:01:38.621 PM
clean
Function execution took 60002 ms, finished with status: 'timeout'
2:00:40.267 PM
clean
Failed to delete 0 users
2:00:40.267 PM
clean
Successfully deleted 0 users
2:00:40.082 PM
clean
Failed to delete 0 users
2:00:40.081 PM
clean
Successfully deleted 0 users
2:00:39.852 PM
clean
Failed to delete 0 users
2:00:39.852 PM
clean
Successfully deleted 0 users
2:00:39.604 PM
clean
Failed to delete 0 users
2:00:39.604 PM
clean
Successfully deleted 0 users
2:00:38.620 PM
clean
Function execution started
12:48:53.792 PM
clean
【问题讨论】:
-
它会抛出任何错误吗?或者它没有做预期的工作?
-
@ApoorvaChikara 感谢您的回复,我在问题中添加了 firebase 控制台输出。它没有按预期工作
-
我认为这是超时的原因,你为什么不尝试使用批量删除用户 - 你可以查看this链接。它不一样,但小的调整可能对你有用。
-
根据文档,creationTime 属性被格式化为 UTC 字符串。例如,
Sat, 03 Feb 2001 04:05:06 GMT。尝试在代码中使用该属性的格式,看看它是否有效。例如userRecord.metadata.creationTime.includes("16 May 2021")
标签: node.js firebase firebase-authentication google-cloud-functions