2017-02-14 21 views
1

削除ポイントを見つけるためにエントリを参照することで、ネストされた子全体をFirebaseデータベースから削除するにはどうすればよいですか?データベース内のネストされた配列全体を削除する(

たとえば、(リスト)の下に2つのエントリがネストされています。 ()-KcxacywN4EkvwAzugfVおよび()-KcxaeBAIW-WgLAsajvVである。私はデータベース()-KcxaeBAIW-WgLAsajvVID-KcxaeBAIW-WgLAsajvU-4-725391765511696(下記参照)を使用して削除したいと思います。

enter image description here

私は、削除ボタンを表示するには、各データベースエントリのためのボタンを設定しています。各ボタンには、各データベースエントリのdata-またはIDが含まれています。

rootRef.on("child_added", snap => { 
    var title = snap.child("title").val(); 
    var link = snap.child("link").val(); 
    var type = snap.child("type").val(); 
    var id = snap.child("id").val(); 
     $("#table_data").append("<div class='col-lg-4'><div class='card card-app'><div class='card-block'><h4 class='card-title'>"+ title +"</h4><small>"+ type +"</small><hr><a href='"+ link +"' target='_blank'>Download</a>   <a class='user float-right' onclick='removeClick()' data-name='"+ id +"'>Remove</a>   </div></div></div>"); 
    }); 

ボタンのonClickイベントと関連付けられたIDは、この関数をトリガします。私の考えは、IDdata-から入れ子にして、(2)-KcxaeBAIW-WgLAsajvVをデータベースから削除することです。他のすべてのネストされたエントリについても同じプロセスです。

function removeClick() { 
    $(".user").click(function() { 
     rvm = $(this).attr("data-name"); 
    }); 
    alert(rvm); 
    firebaseRef.remove(rvm); 
} 

私はhttps://firebase.google.com/docs/database/web/read-and-writeを研究してきたし、ネストされたエントリーの実際の削除を見つけ出すように見えることはできません。これを行うには、remove()または別の方法をどうすれば使用できますか?

私はこのことをより深く理解するために努力してきました。

firebaseRef.child(rvm).remove(); 

どのようにデータを表示しているのですか。私は試した。

rootRef.child().remove(); 

これは、単にデータベース全体を削除します...

最終ランニングコード:

function removeClick() { 
    $(".user").click(function() { 
     rvm = $(this).attr("data-name"); 
    }); 
    alert(rvm); 
    var query = rootRef.orderByChild("id").equalTo(rvm); 
    query.once("value", function(snapshot) { 
    snapshot.forEach(function(itemSnapshot) { 
     itemSnapshot.ref.remove(); 
    }); 
}); 
} 

答えて

2

あなたがその鍵を知っている場合にのみ、アイテムを削除することができます。あなたの現在の構造を考えれば、まずあなたが言及したIDの鍵を調べる必要があります。

var listRef = ref.child("list"); 
var query = listRef.orderByChild("id").equalTo("-KcxaeBAIW-WgLAsajvU-4-725391765511696"); 
query.once("value", function(snapshot) { 
    snapshot.forEach(function(itemSnapshot) { 
     itemSnapshot.ref.remove(); 
    }); 
}); 

あなたはidを持つ単一の子を持っている場合は、キーとしてIDを使用して、データベースの再構築を検討する必要があります。あなたがデータベースのルートを指すようref変数を持っていると仮定すると

。それを行うと、アイテムを削除することができます:

listRef.child("-KcxaeBAIW-WgLAsajvU-4-725391765511696").remove() 
+0

これは機能しました!ありがとうございました。私は今参照してください、あなたは何とか参照を一致させる必要があります。私は質問、作業コードに投稿しました。 – rniller

関連する問題