【发布时间】: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