画像ファイルのフォルダ以下一括削除
- usersコレクションのドキュメントの削除をトリガーに発火
- storageの構成を
users/{ドキュメントID}/{画像ファイル名}
にしておく - 削除されたドキュメントID以下すべてが削除される
backetのdeleteFiles
を知りたければ下記を参考にする
https://googleapis.dev/nodejs/storage/latest/#deleteFiles
import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'
const tokyoRegion = 'asia-northeast1'
// 環境変数の取得
const firebaseConfig: string|any = process.env.FIREBASE_CONFIG
const firebaseConfigObj: object|any = JSON.parse(firebaseConfig)
const bucket = admin.storage().bucket(firebaseConfigObj.storageBucket)
module.exports = functions
.region(tokyoRegion)
.firestore.document('users/{userDocId}')
.onDelete((snap, context) => {
const { userDocId } = context.params
return bucket.deleteFiles({
prefix: `users/${userDocId}`
})
})
特定の画像ファイルを削除
こちらのコードは動作確認していません。
要点は
- 削除したいimagePathを指定
- bucketの設定(複数個バケットがある場合)
-
bucket.file({filePath}).delete()
で削除
import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'
const tokyoRegion = 'asia-northeast1'
// 環境変数の取得
const firebaseConfig: string|any = process.env.FIREBASE_CONFIG
const firebaseConfigObj: object|any = JSON.parse(firebaseConfig)
const bucket = admin.storage().bucket(firebaseConfigObj.storageBucket)
module.exports = functions
.region(tokyoRegion)
.firestore.document('users/{userDocId}')
.onDelete((snap, context) => {
const { userDocId } = context.params
const data = snap.after.data()
// 何かしらで特定の削除する画像ファイルを指定
const imagePath = data.imagePath
return bucket.file(imagePath).delete()
})