Firebase从js循环(web)中的ref中删除一个键

时间:2017-02-22 14:23:58

标签: javascript firebase firebase-realtime-database

我想从HTML输出中的引用中删除一个选定的子项。

密钥是聊天消息或帖子。

现在我想,用户可以使用按钮删除所选消息/帖子。

我可以删除所有,但不完全是所选的孩子。

结果和内容来自" for in"循环。

使用Angular和AngularFire删除所选的(子)是没有问题的,但我希望这没有角度。

// get ref
var dbRef = firebase.database().ref().child("user/chat");

// child added
dbRef.on("child_added", function(snapshot) {
var newPost = snapshot.val();

// Loop / Results

for(var prop in newPost){
var xxx = "<li>
<p>"+newPost.content+"</p>
<button class='delete' id='deleteThis'> X </button>
</li>";
$(xxx).appendTo("#ul-result");    
}

// delete Post with button from above

$('#deleteThis').on('click', function(){
// delete all posts --- work
// dbRef.remove();

// delete only this post --- ?
dbRef.child('?').remove();

});
});
});

screenshot

1 个答案:

答案 0 :(得分:0)

您可以做一些事情。首先,当id每个deleteThis应该是唯一的时,您似乎会在id .delete处拥有多个按钮。因此,您可能希望将点击处理程序添加到snapshot.forEach。其次,正如其他人提到的那样,你应该使用<button class='delete' data-key='" + newPost.key + "'> X </button> 来迭代孩子们。最后,在创建按钮时,可以将帖子的键添加为数据属性:

$('.delete').on('click', function(){
  var id = "user/chat/" + this.dataset.key;
  firebase.database().ref(id).remove();
});

然后在您的点击处理程序中,您可以使用该键定位该特定帖子:

$this->request->query('date');