2016-09-09 16 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'); 

データベースにToDoリストがありますが、配列を使用していましたが、firebase doesntが配列を使用していると理解していました。

だから私はちょうど

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

ように私のToDoリストに値を追加し、それが

enter image description here

に動作します。しかし、私はアイテムを削除しようとすると、何

を行うdoesntのようです

refer.remove();todo辞書全体を削除し、refer.child(todoSlot.value).remove();は値を削除していないようですデータベースから。

これを行う正しい方法は何ですか?

+0

どのようにして削除するには、どのようなアイテムを知っています?私は、あなたが削除したいTODOアイテムを決定する条件を持っていると仮定します。または、値が一意であると想定しています(その場合、それらを使用してキーを決定できます)。 –

+0

'todo'のデータは時間順に正しいですか?ので、2番目のアイテムは "犬を歩く"、ユーザーが2番目のアイテムを削除すると言う場合、私は犬を散歩を削除したいです。明らかに値は複数の子供で同じになる可能性があるので、ベストプラクティスではありませんが、私はこれを学びたいだけです。また、.jsファイルにuniqiue idsを格納しないでください、アイテムを削除/追加するファサードです –

+0

特にマルチユーザ分散システムでは、「第2のアイテム」が何であるかの保証はない。特定のアイテムを削除したい場合は、そのアイテムのキー( '-K 'で始まるもの)を保持する必要があります。 –

答えて

0

あなたの間違いはrefer.child(todoSlot.value)です。
間違ったパスを参照しています。 child()は、値ではなくフィールドの名前をとる必要があります。
新しい子を押すと、次のことによって、そのキーを取得することができます:
var todoSlotKey = refer.push(todoSlot.value);
をそして、あなたはちょうどプッシュtodoSlot.valueを削除したい場合は、単に行うことができます。refer.child(todoSlotKey).remove();

関連する問題