【问题标题】:How to delete files from Firebase storage while deleting a document that has reference for that file?如何在删除具有该文件参考的文档时从 Firebase 存储中删除文件?
【发布时间】:2019-04-27 12:29:33
【问题描述】:

我有一个 Angular 应用程序,它包括项目,每个项目都有其图像上传到 Firebase 存储,并有一个引用图像 URL 的 img 属性。 我想在删除文档的同时删除图片,如何正确操作?

【问题讨论】:

标签: angular firebase google-cloud-firestore


【解决方案1】:

您可以使用通过onDelete 事件触发的云函数,请参阅https://firebase.google.com/docs/functions/firestore-events

然后,在 Cloud Function 中,您将使用 Google Cloud Storage Node.js Client API 删除 Cloud Storage 中的文件。

假设 bucketname 是 Firestore 文档的字段,其中包含文件存储桶和名称(即“引用图像 URL 的 img 属性”),那么您可以按照以下方式执行操作行:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const defaultStorage = admin.storage();


exports.deleteFile = functions.firestore
    .document('fileDocuments/{fileDocID}')
    .onDelete((snap, context) => {
      const deletedValue = snap.data();
      const fileBucket = deletedValue.bucket;
      const fileName = deletedValue.name;

      return defaultStorage
        .bucket(fileBucket)
        .file(fileName)
        .delete();

});

您可以学习以下官方 Cloud Functions 示例或文档项目:

https://firebase.google.com/docs/functions/video-series

https://github.com/firebase/functions-samples

https://cloud.google.com/nodejs/docs/reference/storage/2.5.x/File#delete

【讨论】:

  • 那么如何在 Angular 应用程序中实际使用它?
  • @OmarAbdelhady 您可以在对您问题的评论中查看 Frank 提出的解决方案。它实际上是一个更简单的解决方案,它包括通过 JavaScript SDK (firebase.google.com/docs/storage/web/delete-files) 从您的应用程序中删除文件。我的回答中提出的基于 Cloud Function 的解决方案可能不是必需的,而且更复杂。
猜你喜欢
  • 2019-10-20
  • 2018-11-19
  • 2021-07-07
  • 1970-01-01
  • 2021-02-25
  • 2017-05-24
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多