2017-02-14 189 views
1

整個嵌套數組怎樣才能通過引用的條目,從而找到缺失的所需點刪除一個火力地堡數據庫整個嵌套的孩子?火力地堡刪除()在數據庫

例如,我有下(列表)嵌套兩個條目。 ()-KcxacywN4EkvwAzugfV和(2 -KcxaeBAIW-WgLAsajvV。我想從數據庫中刪除()-KcxaeBAIW-WgLAsajvV使用它的ID-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(); 
    }); 
}); 
} 

回答

2

,如果你知道它的鍵只能刪除項目。因此,鑑於您目前的結構,您首先需要查找您提到的身份證的關鍵字。

假設你有一個變量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() 
+0

這工作!謝謝。我現在看到,你必須以某種方式等同於參考。我發佈了這個問題,工作代碼。 – rniller