【问题标题】:Is there a way to delay deletion of a Firebase user and their associated data?有没有办法延迟删除 Firebase 用户及其相关数据?
【发布时间】:2020-07-22 10:41:19
【问题描述】:

我正在创建一个 Flutter 应用程序,它使用 Firebase 作为后端进行身份验证,使用 Firestore 作为数据库并存储更大的文件以存储一些用户数据。我希望允许用户删除他们的帐户和所有相关数据,但我不希望立即执行此操作,以便用户在决定在 15 天内返回时恢复他们的帐户。

我最初认为我可以使用可以从我的应用调用的 Firebase 函数来执行此操作,如下所示:

import * as functions from 'firebase-functions';

const admin = require('firebase-admin');
admin.initializeApp();

const fifteenDays = 1296000000;

export const helloWorld = functions.https.onCall((data, context) => {
    setTimeout(async () => {
        try {
            await admin.auth().deleteUser(data.id);
            console.log(`Deleted User: ${data.id}`);
            await admin.firestore().collection("users").document(data.id).delete();
            console.log(`Deleted User Firestore: ${data.id}`);
            await admin.storage().bucket().deleteFiles({
                    prefix: `userPhotos/${data.id}/`,
                    force: true,
                },
                function(err: any) {
                    if (err) {
                        console.log(err);
                    }
                    else {
                        console.log(`All the Firebase Storage files in users/${data.id}/ have been deleted`);
                    }
                }
            );
        }
        catch (error) {
            console.log(error);
        }
    }, fifteenDays);

});

但是在阅读Firebase Functions Tips & tricks找到取消超时的方法后,我看到函数终止后运行的代码无法访问CPU,因此这段代码甚至无法工作。

是否有人对通过取消预定删除的能力来实现我需要的方法有任何建议?任何免费解决方案都会有所帮助。

【问题讨论】:

    标签: firebase flutter google-cloud-functions


    【解决方案1】:

    您始终可以创建一个集合,例如“Users_to_delete”,并在文档中插入用户 ID 和删除日期。

    例如

    Users_to_delete
    
    |----Document ID
    
    |-------- UserID
    
    |-------- Date_to_delete
    

    然后在云函数中每天/每小时运行一个函数,检查当前日期的集合过滤并删除那里的每个用户。

    【讨论】:

    • 感谢您的建议!不幸的是,Firebase 函数调度不是free。你知道我可以使用什么替代品吗?
    • @ChristopherMoore 看来您可以拥有 3 个免费工作。 “虽然需要计费,但您可以预期总体成本是可控的,因为每个 Cloud Scheduler 作业每月花费 0.10 美元(美元),并且每个 Google 帐户允许三个免费作业。使用 Blaze 定价计算器生成一个根据您的预计使用情况估算成本。”
    • 您知道您是否还必须加入 Blaze 计划才能使用这 3 个免费工作?看来你必须在 Blaze 计划中才能使用这 3 个工作。如果你不知道,我会试试看。
    • @ChristopherMoore 是的,您必须参与灭火计划。如果你想要一个免费的并且你确实有一个服务器正在运行,你可以运行一个节点作业并在那里安排在你安排的时间直接调用该函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2016-11-13
    • 2019-08-15
    • 2018-09-30
    • 2019-08-13
    • 2018-09-15
    相关资源
    最近更新 更多