更新Firebase数据库时,数据表在表中添加空行

时间:2018-02-08 09:13:47

标签: jquery firebase firebase-realtime-database datatables

我想在firebase中停止自动刷新数据。 我不想自动刷新它们。 我使用dataTable显示来自Firebase数据库的数据。 但随着Firebase数据库的更新,当Firebase数据库更新时,dataTable会显示额外空白行。

我还在下面贴上了屏幕短裤。 Screen 1 Before Database Update

After Databse Update It will Shows balnks Rows

 $(document).ready(function() {
         table = $('#example').DataTable( {
            "columnDefs": [ {
                "targets": -1,
                "data": null,
                "defaultContent": "<button type='button' class='mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored mdl-color-text--white'>Delete User</button>"

            } ],
            dom: 'Bfrtip',
                    buttons: [
                        'copy', 'csv', 'excel', 'pdf', 'print'
                    ],
        } );

        $('#example tbody').on( 'click', 'button', function () {
            var data = table.row( $(this).parents('tr') ).data();
           firebase.database().ref().child('mobilereg/' +  data[1]).remove();
           firebase.database().ref().child('limited_acces_devices/' +data[1]).remove();
           firebase.database().ref().child('full_acces_devices/' + data[1]).remove();
                     window.location.reload();
        } );
     });

     var ref = firebase.database().ref("mobilereg/");
 var i=0;
   ref.on("value", function(snapshot) {
     var arr = snapshot.val();
 var arr2 = Object.keys(arr);

   snapshot.forEach(function (childSnapshot) {
         var value = childSnapshot.val();
         var key = arr2[i];

         var dataSet = [i+1, arr2[i],value.screen];
        table.rows.add([dataSet]).draw();
        i++;
     });
   }, function (error) {
      console.log("Error: " + error.code);
   });

1 个答案:

答案 0 :(得分:1)

要仅加载一次数据,请使用once()代替on()

ref.once("value", function(snapshot) {

但实时更新是使用Firebase的主要优势之一,因此我建议您确定空白行的实际原因而不是禁用实时更新。

一种简单的方法是在向table.rows添加新项目之前清除snapshot.forEach(就在child_之前)。

更有效的方法是侦听各种npm cache clean --force事件,然后更新新子节点,已删除子节点和已更改子节点的表。