我想在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);
});
答案 0 :(得分:1)
要仅加载一次数据,请使用once()
代替on()
:
ref.once("value", function(snapshot) {
但实时更新是使用Firebase的主要优势之一,因此我建议您确定空白行的实际原因而不是禁用实时更新。
一种简单的方法是在向table.rows
添加新项目之前清除snapshot.forEach
(就在child_
之前)。
更有效的方法是侦听各种npm cache clean --force
事件,然后更新新子节点,已删除子节点和已更改子节点的表。