【Swift/Firebase】Realtime Databaseで条件を満たす複数のデータを一括削除する方法!

この記事からわかること

  • Swift/FirebaseRealtime Database条件満たす複数データ一括削除する方法
  • removeValueメソッドupdateChildValues使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Swiftを使ってのFirebaseのRealtime Databaseの導入方法や操作については下記記事を参考にしてください。

removeValueメソッド

Realtime Databaseに格納しているデータを削除するにはremoveValueメソッドを使用します。

このメソッドを使用することで指定した箇所以下の階層にあるデータを全て削除することができます。

ref.child("users").removeValue()

しかしこのメソッドでは一度に複数箇所のデータを削除することはできません。一度に複数箇所のデータを削除(更新)するにはupdateChildValuesメソッドを使用します。

updateChildValuesメソッド

updateChildValuesメソッドは指定した階層のデータのみを更新するメソッドです。このメソッドでは引数に辞書型で更新したい箇所を複数渡すことが可能になっています。

guard let key = ref.child("posts").childByAutoId().key else { return }
let post = ["uid": userID,
      "author": username,
      "title": title,
      "body": body]
let childUpdates = ["/posts/\(key)": post,"/user-posts/\(userID)/\(key)/": post]
ref.updateChildValues(childUpdates)

このメソッドで渡す値をnilにすることでその階層のデータを削除することができるのでこの仕組みを利用して一度にデータを削除する処理を構築していきます。

条件を満たす複数のデータを一括削除する方法

複数箇所のデータを一度に削除するためにはそこまでのパスをキー値として保持する辞書型を生成します。値をnilにしておけば対象のデータを削除することが、任意の値を渡せば一括で更新することができるようになります。

また条件を満たすものを削除したい場合DBからデータを取得後にswiftで扱いやすいように[構造体]形式などに変換後、filterメソッドで条件を絞り、以下のように動的に配列を作成することで実装できました。

let items = users.filter({$0.ios == true})
var removeItems:[String:Any?] = [:]
for item in items {
    removeItems.updateValue(nil, forKey: item.id)
}
ref.child("users").updateChildValues(removeItems as [AnyHashable : Any] )

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

自作iOSアプリ

\ アプリをリリースしました /

mapping

自分だけの地図を作ろう!-mapping-

無料posted withアプリーチ

割り勘アプリ-bill-

旅行におすすめ!
割り勘アプリ-bill-

無料posted withアプリーチ

Imakoko

現在地を取得するアプリ!Imakoko

無料posted withアプリーチ

ふるログ

ふるさと納税管理アプリ-ふるログ-

無料posted withアプリーチ

Remind-シンプル通知アプリ-

シンプル通知アプリ-Remind-

無料posted withアプリーチ

CLIPURL

好きな記事をクリップしよう!-CLIPURL-

無料posted withアプリーチ

記録カレンダー

続けたを可視化できるアプリ!記録カレンダー

無料posted withアプリーチ

CART-共有できるお買い物リスト-

CART-共有できるお買い物リスト-

無料posted withアプリーチ

QuickPressPanel

早押しゲーム-QuickPressPanel-

無料posted withアプリーチ

貸し借り管理アプリ

友達とのお金の管理-貸し借り管理アプリ-

無料posted withアプリーチ

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Githubにて
iOSアプリのソースコードを公開中!

自作Webアプリ

子育て知識共有サイト-mikata-

子育て知識共有サイト-mikata-

New Article

index