![](/img/trans.png)
[英]Download Firebase Storage folder to a Cloud Functions Temporary Folder
[英]Remove users storage folder with firebase cloud functions
当用户删除其帐户时,我想删除其存储文件及其数据。
我可以对RTDB进行多路径删除,我该怎么做,但也要从存储中删除文件?
我曾尝试在.then
上链接.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();
})
});
我觉得这是因为我没有正确处理诺言,我只是不知道哪里出了问题。
我的代码段目前有效,直到我链接.then()
干杯。
您当前的代码未从顶级代码返回任何内容,这意味着它在写入数据库时可能随时终止。
您将要return admin.database()...
, 然后在其后链接其他的then()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.