鉴于
var messageListRef = new Firebase('https://SampleChat.firebaseIO-demo.com/message_list');
messageListRef.push({ 'user_id': 'fred', 'text': 'Yabba Dabba Doo!' });
如何从Firebase中删除添加的数据{ 'user_id': 'fred', 'text': 'Yabba Dabba Doo!' }
?有没有干净简单的方法呢?
我希望以后能够再次找到该数据,然后将其删除,假设我不知道生成的唯一ID,我无法new Firebase('https://SampleChat.firebaseIO-demo.com/message_list/'+uniqueId).remove()
(我不会&# 39;不知道这是不是很好的做法。在我的想法中,我首先会查询数据,但我不知道如何使用数据列表来执行此操作。例如,我希望能够在Disconnect上删除该数据。
在该页https://www.firebase.com/docs/web/api/firebase/push.html上,似乎是"查看数据列表"还没写。是否在路线图中为数据列表添加此类删除?
答案 0 :(得分:3)
当您致电push
时,它会返回新节点。因此,您可以保留用户在内存中添加的消息列表:
var myMessageKeys = []; // put this somewhere "globally"
然后每当您添加消息时:
var newMessageRef = messageListRef.push({ 'user_id': 'fred', 'text': 'Yabba Dabba Doo!' });
myMessageKeys.push(newMessageRef.key());
就个人而言,这对我来说很难受。我更愿意使用查询,例如,如果fred断开连接,你可以执行以下操作:
var myMessages = messageListRef.orderByChild('user_id').equalTo('fred');
myMessages.on('value', function(messagesSnapshot) {
messagesSnapshot.forEach(function(messageSnapshot) {
messageSnapshot.ref().remove();
});
});
答案 1 :(得分:1)
因此找出要删除的消息就是诀窍。但是假设您要按用户ID删除;也许当Fred
断开连接时,您想要删除他的所有消息。您可以像这样找到并删除它们:
var query = messageListRef.orderByChild('user_id').equalTo('Fred');
query.once('child_added', function(snapshot) {
snapshot.forEach( function(msg) {
msg.ref().remove();
});
});