【问题标题】:Firebase Auth: Delete all users created on a certain dateFirebase Auth:删除在特定日期创建的所有用户
【发布时间】: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


【解决方案1】:

看来我上面的评论很有帮助,所以我会把它作为更好的可见性的答案。

creationTime 属性被格式化为 UTC 字符串。例如,Sat, 03 Feb 2001 04:05:06 GMT。在代码中使用属性的格式使其工作,例如。 g.

userRecord.metadata.creationTime.includes("16 May 2021")

【讨论】:

    【解决方案2】:

    原来我只是时间格式错误。我将"May 16" 更改为"16 May",它起作用了。由于函数没有返回响应,我通过谷歌云控制台增加了超时值,让它完成循环所有用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 2015-09-08
      • 2019-12-06
      • 2017-09-13
      • 1970-01-01
      • 2018-11-21
      • 2020-12-07
      相关资源
      最近更新 更多