У меня есть приложение Angular, оно включает в себя элементы, каждый элемент которых имеет свое изображение, загруженное в хранилище Firebase, и имеет свойство img, которое ссылается на URL-адрес изображения. Я хочу удалить изображение при удалении документа, как это сделать правильно?
Вы можете использовать облачную функцию, запускаемую через событие onDelete, см. https://firebase.google.com/docs/functions/firestore-events.
onDelete
Затем в облачной функции для удаления файла в облачном хранилище вы используете клиентский API-интерфейс Google Cloud Storage Node.js .
Давайте представим, что bucket и name - это поля документа Firestore, которые содержат область файла и имя (т. Е. «Свойство img, ссылающееся на URL-адрес изображения»), тогда вы можете сделать что-то по следующему линии:
bucket
name
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(); });
Вы можете изучить следующие официальные образцы или документацию по облачным функциям:
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