Firebase remove()数据库中的整个嵌套数组

时间:2017-02-14 17:27:00

标签: javascript firebase firebase-realtime-database

如何通过引用条目来查找所需的删除点,从Firebase数据库中删除整个嵌套子项?

例如,我有两个嵌套在 list 下的条目。 ( 1 -KcxacywN4EkvwAzugfV和( 2 -KcxaeBAIW-WgLAsajvV。我想使用 ID -KcxaeBAIW-WgLAsajvV从数据库中删除( 2 -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,触发此功能。我的心理想法是,从数据中取出 ID ,从数据库中删除其嵌套子项(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,我是如何查看数据的。我试过了。

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();
   });
 });
}

1 个答案:

答案 0 :(得分:3)

如果您知道其密钥,则只能删除该项目。因此,根据您当前的结构,您首先需要查找您提到的ID的密钥。

假设您有一个指向数据库根目录的变量ref

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作为键。如果您这样做,可以删除项目:

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