如何在Firebase实时数据库中检查更改的值并使它们显示在html表中?

时间:2019-01-20 15:51:30

标签: javascript jquery html firebase-realtime-database

将表中的条目从数据库中删除后,我已经能够从表中删除它们,并且一旦对其进行了编辑,就可以添加表中的条目。 how to check if data is already in html table using firebase real time database? 我现在正在寻找如何查找数据库的实时更改。

var database = firebase.database().ref().child('transactions');
database.on('child_added', function(snapshot){
    var data = snapshot.val();

    var content = '<tr id="'+snapshot.key+'">';
    content += '<td>' + data.CustomerName + '</td>';//column2
    content += '<td>' + data.TimeEffected + '</td>'; //column1 
    content += '<td>' + data.DateEffected + '</td>'; //column1
    content += '<td>' + data.Successful + '</td>'; //column1
    content += '</tr>';
    $('#ex-table').append(content);

    database.on('child_removed', function(snapshot){
        $('#'+snapshot.key).remove()
    });

});

我尝试使用这个:

database.on('child_changed', function(snapshot){
        $('#'+snapshot.key).change()
    });

我尝试将其置于remove方法下,但未​​成功。

1 个答案:

答案 0 :(得分:2)

$('#'+snapshot.key)在HTML中获得了正确的元素,但是jQuery's change() method并没有按照您的想象做。阅读链接的文档以了解其实际作用。

如果您想一下这是否有意义:jQuery的内置方法如何知道如何更新HTML结构?

只有您的代码知道它为快照中的数据创建了什么HTML。您将需要将在child_added回调中创建HTML的代码(部分)复制到child_changed回调中。

类似这样的东西:

database.on('child_changed', function(snapshot){
    var data = snapshot.val();

    var content = '<tr id="'+snapshot.key+'">';
    content += '<td>' + data.CustomerName + '</td>';//column2
    content += '<td>' + data.TimeEffected + '</td>'; //column1 
    content += '<td>' + data.DateEffected + '</td>'; //column1
    content += '<td>' + data.Successful + '</td>'; //column1
    content += '</tr>';

    $('#'+snapshot.key).replaceWith(content)
});