数据表不适用于Firebase

时间:2018-12-05 11:21:37

标签: javascript firebase firebase-realtime-database datatables

我试图以数据表的形式显示数据,并允许用户以所需格式下载。但这似乎不起作用,我的数据既没有显示也没有下载。这是当前正在使用的代码。

document.addEventListener("DOMContentLoaded", function(event) {


    var dTable=$('#ex-table').DataTable({
        "bDestroy": true,
        dom: 'lfrtipB',
        buttons: [ 
                    {
                        extend: 'copyHtml5',
                        title: 'Records'
                    },
                    {
                        extend: 'csvHtml5',
                        title: 'Records'
                    },
                    {
                        extend: 'excelHtml5',
                        title: 'Records'
                    },
                    {
                        extend: 'pdfHtml5',
                        title: 'Records'
                    },
                    'print'
                ],
         lengthMenu: [[5, 20, 50, -1], [5, 20, 50, "All"]]

  });


});



var databaseRef = firebase.database().ref("users/");

var table = $('#ex-table').DataTable();

databaseRef.on("child_added", function(data) { 
   var storageObj = data.val();

   var dataSet = [storageObj.Department, storageObj.EmpId, storageObj.Name, storageObj.Position];

   table.rows.add([dataSet]).draw();

});

这是我尝试使用的代码的https://codepen.io/jagrutitiwari/pen/WYBWVy代码。我要去哪里错了?

更新

我的users节点的屏幕截图:enter image description here

Update2

安全规则:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

更新3

如果我将dataSrc添加到数据表中,则可以使用,但现在无法在数据表中看到导出按钮。

document.addEventListener("DOMContentLoaded", function(event) {


    var dTable=$('#ex-table').DataTable({
        "bDestroy": true,
        dom: 'lfrtipB',
        data: dataSrc,
        buttons: [ 
              {
                 extend: 'copyHtml5',
                 title: 'Records'
               },
               {
                 extend: 'csvHtml5',
                 title: 'Records'
               },
               {
                  extend: 'excelHtml5',
                  title: 'Records'
               },
               {
                   extend: 'pdfHtml5',
                   title: 'Records'
               },
                   'print'
               ],
         lengthMenu: [[5, 20, 50, -1], [5, 20, 50, "All"]]

  });


});

1 个答案:

答案 0 :(得分:1)

根据您的安全规则,您的用户需要进行身份验证才能读取(和写入)数据库。

使用您在问题中显示的代码(我想是整个HTML页面的摘录),您似乎并没有要求用户进行身份验证,因此在查询数据库时您不会得到任何记录

您应该集成身份验证机制,例如使用FirebaseUI Auth(请参见https://github.com/firebase/firebaseui-web),或者,如果您的数据库正在测试中,请尝试使用“公共”规则,例如:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}