2017-05-16 17 views
1

firebase-databaseにいくつかのオブジェクトを設定し、HTMLベースのテーブルに 'child_added'とappend()を付けて表示し、データベースに追加するとすぐに動的に追加しますテーブルの各行に削除ボタンにする必要がありますが、問題は、私はこの削除ボタンを動作させることはできません...JavaScriptを使用してfirebaseからオブジェクトを削除する

これは、データベースの構造がどのように見えるかです:

Assets: { 
    -KkBgUmX6BEeVyrudlfK: { 
     id: '-KkBgUmX6BEeVyrudlfK', 
     name: 'John', 
     brand: 'HP' 
    } 
    -KkDYxfwka8YM6uFOWpH: { 
     id: '-KkDYxfwka8YM6uFOWpH', 
     name: 'Jack', 
     brand: 'Dell' 
    } 
} 

これは私です:

var rootRef = firebase.database().ref().child("Assets"); 
$("#table_body").on('click','.delete-btn', function(e){ 
    var $row = $(this).closest('tr'), 
     rowId = $row.data('id'); 
    var assetKey = rootRef.child("id"); 
    //it should remove the firebase object in here 
    rootRef.child(assetKey).remove() 
    //after firebase confirmation, remove table row 
    .then(function() { 
     $row.remove(); 
    }) 
    //Catch errors 
    .catch(function(error) { 
     console.log('ERROR'); 
    }); 
}); 

rootRef.on("child_changed", snap => { 

    var assetKey = snap.child("id").val(); 
    var name = snap.child("name").val(); 
    var brand = snap.child("brand").val(); 

$("#table_body").append("<tr data-id='"+assetKey+"'>"+ 
          "<td>" + name + "</td>" + 
          "<td>" + brand + "</td>" + 

          "<td><div buttons>"+ 
            "<button class='delete-btn>delete</button>"+ 
            "</div></td></tr>"); 
}); 

にconsole.logに示したオブジェクトキーの正しい値を返しますが、$("#table_body").on('click','.delete-btn', function(e){の「AssetKeyのは、」正常に動作していない場合rootRef.on("child_changed", snap => {内部にあるassetKey ...

答えて

2

この行は、私には間違って見えます(しようトップレベルAssetsノードの存在しないidプロパティ)を取得するには:

var assetKey = rootRef.child("id"); 

は、代わりにこれを試してみてください:

var rowId = $row.data('id'); 
rootRef.child(rowId).remove() 
... 
+0

ありがとう!これは私の問題を解決しました、それは今、美しく働いています:D –

+1

@LeonardoCarvalho Blz cara! Saudaçõesdo Rio de Janeiro ;-) –

+0

実際には行が削除されたときに別の行を追加して削除すると(本当に速い)、問題があります。これは 'child_added 'のためだと思います。 '' child_removed''と '' child_changed''を削除すると、同じ情報を持つ別の行を追加すると同時に行が削除されます。 –

関連する問題