【问题标题】:Remove users storage folder with firebase cloud functions使用 Firebase 云功能删除用户存储文件夹
【发布时间】: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


    【解决方案1】:

    您当前的代码没有从顶级代码返回任何内容,这意味着它可能在写入数据库时​​随时终止。

    你会想要return admin.database()...然后在它之后链接额外的then()

    【讨论】:

    • 谢谢,我环顾四周,发现您无法删除包含所有项目的文件夹。如果我想一次删除文件夹中的每个项目(用户的图像),你会推荐什么?也许是在每次删除帖子时触发的云功能(使用 img id 作为参考)或者会被认为是“昂贵的”。
    • 如果要删除“文件夹”中的所有内容(实际上没有文件夹),则需要使用 Cloud Storage 列表 API 查找所有具有公共前缀(“文件夹”),迭代它们,然后单独删除它们。
    猜你喜欢
    • 2020-10-10
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 2021-01-23
    • 2018-11-17
    • 2018-11-13
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多