我有一个Angular应用程序,它包含的项目每个项目都将其图像上传到Firebase存储上,并且具有img属性,该属性引用图像的URL。 我想在删除文档时删除图像,如何正确处理?
答案 0 :(得分:2)
您可以使用通过onDelete
事件触发的Cloud Function,请参见https://firebase.google.com/docs/functions/firestore-events。
然后,在Cloud Function中,您将使用Google Cloud Storage Node.js Client API删除Cloud Storage中的文件。
让我们想象一下bucket
和name
是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