2016-09-09 79 views
0

我可以成功地從我的Firebase數據庫添加和提取值。Firebase node.js從字典中移除項目

firebase.initializeApp(config); 
// Get a reference to the database service 
var database = firebase.database(); 
var ref = database.ref(); 
var refer = database.ref('todo'); 

我有一個待辦事項列表在我的數據庫,我想用一個數組但是從我的理解火力犯規喜歡陣列。

所以我只需要添加值到我的待辦事項列表就像

function handleAddTodoIntent(intent, session, response) { 
    refer.push(todoSlot.value); 
} 

和它的作品

enter image description here

但是當我嘗試刪除的項目,似乎它沒有做任何事情

refer.remove();刪除整個todo字典和refer.child(todoSlot.value).remove();似乎沒有刪除該值從數據庫。

這樣做的正確方法是什麼?

+0

你怎麼知道要刪除什麼項目?我認爲你有一些條件決定了你想刪除什麼TODO項目。或者你是否認爲這些值是唯一的(在這種情況下,你可以使用它們來確定你的密鑰)? –

+0

所以'todo'中的數據是按時間順序的權利?所以第二項會是「走狗」,如果用戶說刪除第二項,我想刪除走狗。顯然,這不是最好的做法,因爲值可以在多個孩子相同,但我只是試圖學習這一點,也不存儲uniqiue ID在.js文件中,它只是一個門面刪除/添加項目 –

+0

特別是在一個多用戶分佈式系統不能保證「第二項」是什麼。如果你想刪除一個特定的項目,你必須保持該項目的密鑰(以'-K'開始)。 –

回答

0

您的錯誤是refer.child(todoSlot.value)
您正在引用錯誤的路徑。 child()應取該字段的名稱,而不是值。
當你推一個新的孩子,你可以通過以下獲得其關鍵:
var todoSlotKey = refer.push(todoSlot.value);
如果你只是想刪除推todoSlot.value,你可以簡單地做:refer.child(todoSlotKey).remove();