首页 > 解决方案 > 如何在删除具有该文件参考的文档时从 Firebase 存储中删除文件?

问题描述

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

标签: angularfirebasegoogle-cloud-firestore

解决方案


您可以使用通过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


推荐阅读