#FirebaseStorageはフォルダごと削除ができない
FirebaseStoregeはフォルダをまるごと削除ができない仕様らしいです。。。
なのでユーザーの削除などで複数あるプロフィール画像や投稿画像を削除する場合はループでフォルダにあるファイルを削除しなければいけないみたい、、、
この仕様制限だけでFirebaseStorageから離れる開発の人も多いんじゃ、、、(わからん)
いろいろ調べて見たけどやり方として2通りあるっぽい。
- FirebaseのCloudfunctionsを使う
- Swiftでループを回して、1つ1つファイルを削除する
僕はjsが得意でないので、Cloudfunctionsは諦めて
後者のループを回す方法選びました。
参考記事がなく、自分でfirebaseStorageにいいメソッドないかな〜ってみたところ、、、ありました!!
#SwiftでループをまわしFirebaseStorageをフォルダの中身を全て削除する方法
listAllを使い、フォルダにあるファイルを全てとってきて、それをループして削除します。
let storage = Storage.storage()
let storageRef = storage.reference()
storageRef
.child("users")
.child(self.uid)
.listAll(completion: { (StorageListResult, error) in
if let error = error {
print("エラー\(error)")
} else {
for ref in StorageListResult.items {
ref.delete { (error) in
if let error = error {
print("エラー\(error)")
} else {
print("storage削除成功!")
}
}
}
})
もっといい方法あるって方はコメントください!!
フォルダ毎削除できるようにしてほしい😂