我正在创建一个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技巧和窍门以找到取消超时的方法之后,我看到在函数终止后运行的代码无法访问CPU,因此该代码甚至无法工作。
有人可以取消计划的删除功能来实现我所需的方法吗?任何免费的解决方案都会有所帮助。
您始终可以创建一个“ Users_to_delete”的集合,并在文档中插入用户ID和删除日期。
例如
Users_to_delete
|----Document ID
|-------- UserID
|-------- Date_to_delete
然后,每天/每小时在云函数中运行一个函数,以检查当天的集合过滤并删除那里的每个用户。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句