【发布时间】:2019-08-15 23:24:13
【问题描述】:
当用户删除他们的帐户时,我想删除他们的存储文件以及他们的数据。
我可以为 RTDB 执行多路径删除,我怎样才能做到这一点,同时也从存储中删除文件?
我尝试过链接.then,但它让一切都失败了......
前...
.then(() => {
const bucket = gcs.bucket(functions.config().firebase.storageBucket);
const path = `categories/${uid}`;
return bucket.file(path).delete();
})
我希望在不总是部署的情况下更快地测试您的功能,因为尝试完成这项工作花费了太多时间......
这是我的工作代码:
exports.removeUserFromDatabase = functions.auth.user()
.onDelete(function(user, context) {
var uid = user.uid;
const deleteUserData = {};
deleteUserData[`users/${uid}`] = null;
deleteUserData[`feed/${uid}`] = null;
deleteUserData[`friends/${uid}`] = null;
deleteUserData[`profileThumbs/${uid}`] = null;
deleteUserData[`hasUnreadMsg/${uid}`] = null;
deleteUserData[`userChatRooms/${uid}`] = null;
deleteUserData[`userLikedPosts/${uid}`] = null;
deleteUserData[`userLikedStrains/${uid}`] = null;
return admin.database().ref('/friends').orderByChild(`${uid}/uid`).equalTo(uid)
.once("value").then((friendsSnapshot) => {
friendsSnapshot.forEach((friendSnapshot) => {
deleteUserData[`/friends/${friendSnapshot.key}/${uid}`] = null;
});
return admin.database().ref().update(deleteUserData)
})
.then(() => {
// const bucket = gcs.bucket(functions.config().firebase.storageBucket);
const bucket = admin.storage().bucket();
const path = `categories/${uid}`;
return bucket.file(path).delete();
})
});
我觉得这是因为我没有正确处理承诺,我只是不知道哪里出了问题。
我的代码 sn-p 目前可以工作,直到我链接 .then()
干杯。
【问题讨论】:
标签: node.js firebase google-cloud-platform google-cloud-functions google-cloud-storage