2015-03-31 61 views
3

鑑於如何刪除在Firebase列表中推送的數據?

var messageListRef = new Firebase('https://SampleChat.firebaseIO-demo.com/message_list'); 
    messageListRef.push({ 'user_id': 'fred', 'text': 'Yabba Dabba Doo!' }); 

如何後來從火力地堡刪除添加的數據{ 'user_id': 'fred', 'text': 'Yabba Dabba Doo!' }?有沒有一個乾淨和簡單的方法來做到這一點?

我希望能夠稍後再次找到該數據,然後將其刪除,假設我不知道生成的唯一ID,我不能做new Firebase('https://SampleChat.firebaseIO-demo.com/message_list/'+uniqueId).remove()(我不知道這是否是好事實踐)。在我的想法中,我會首先查詢數據,但我不知道如何使用數據列表來做到這一點。例如,我希望能夠刪除Disconnect上的數據。

在該頁https://www.firebase.com/docs/web/api/firebase/push.html上,看起來「See List of Data」尚未寫入。是否在路線圖中爲數據列表添加這樣的刪除?

+0

查看數據列表可能是指向https://www.firebase.com/docs/網絡/引導/保存-data.html#部分推 – 2015-03-31 23:33:29

回答

1

因此,搞清楚哪些消息是刪除的訣竅。但是,假設你想通過用戶ID刪除;也許當Fred斷開連接時,您想要刪除他的所有消息。你可以找到並刪除它們像這樣:

var query = messageListRef.orderByChild('user_id').equalTo('Fred'); 

query.once('child_added', function(snapshot) { 
    snapshot.forEach(function(msg) { 
     msg.ref().remove(); 
    }); 
}); 
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(); 
    }); 
});