#経緯
とある案件でFirebase Realtime Databaseを使用していたのですが、登録や取得は問題なくできたんですが削除だけがどうしてもわからず教えていただきました。
忘れないようにメモします。
#環境
Vue.js: 2.6.14
firebase: 8.10.0
#前提
データはこんな感じの配列です
hogehoge-default-rtdb
- items
- 0
- itemCode: "1"
- itemName: "あいてむ1"
- などなど
- 1
- itemCode: "2"
- itemName: "あいてむ2"
- 2
- itemCode: "3"
- itemName: "あいてむ3"
itemCodeは一意です
#やりかた
async deleteItem(itemCode) {
let targetIndex = "";
// indexの取得
await firebase
.database()
.ref("items") // itemsを取得する
.orderByChild("itemCode") // itemCodeを持つ要素を並び替え
.equalTo(itemCode) // itemCodeがoderByChildのitemCodeと一致するものを検索する
.once("value", (snapshot) => {
targetIndex = Object.keys(snapshot.val())[0]; // 削除対象のindexを取得
});
//削除の実施
await firebase
.database()
.ref("items")
.child(targetIndex) // 取得した削除対象のindexで検索
.set(null) // 対象のデータをnullにする
.then(() => {
alert("消せたよん")
});
できれば1処理で終わらせたいけどとりあえずこんな感じでできました。
もしもっといい書き方をご存知の方いらっしゃいましたら教えてください。