繁体   English   中英

使用Firebase云功能删除用户存储文件夹

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM