如何在删除具有该文件参考的文档时从Firebase存储中删除文件?

时间:2019-04-27 12:29:33

标签: angular firebase google-cloud-firestore

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

1 个答案:

答案 0 :(得分:2)

您可以使用通过onDelete事件触发的Cloud Function,请参见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