Я устанавливаю некоторые объекты в базе данных firebase и показываю их в таблице HTML с «child_added» и append (), чтобы динамически добавлять их, как только они добавляются в базу данных, и должна быть кнопка удаления в каждой строке таблицы, но проблема в том, что я не могу заставить эту кнопку удаления работать …
Вот как выглядит структура базы данных:
Assets: { -KkBgUmX6BEeVyrudlfK: { id: '-KkBgUmX6BEeVyrudlfK', name: 'John', brand: 'HP' } -KkDYxfwka8YM6uFOWpH: { id: '-KkDYxfwka8YM6uFOWpH', name: 'Jack', brand: 'Dell' } }
И это мой index.js
:
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(""+ "" + name + " " + "" + brand + " " + ""+ ""+ " "); });
assetKey
который находится внутри rootRef.on("child_changed", snap => {
если показано на console.log, возвращает правильное значение для ключа объекта, но «assetKey» на $("#table_body").on('click','.delete-btn', function(e){
работает неправильно …
Эта строка выглядит неправильно для меня (попытка получить несуществующее свойство id
верхнего уровня Assets
node):
var assetKey = rootRef.child("id");
Попробуйте это вместо этого:
var rowId = $row.data('id'); rootRef.child(rowId).remove() ...