Datatable не работает с Firebase - PullRequest
       0

Datatable не работает с Firebase

0 голосов
/ 05 декабря 2018

Я пытаюсь отобразить данные в данных в Datatable и разрешить пользователю скачивать в нужном формате.Но, похоже, это не работает, мои данные не отображаются и не загружаются.Это код, который я использую в данный момент.

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

Обновление2

Правила безопасности:

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

Обновление 3

Если я добавлю dataSrc в Datatable, он будет работать, но ясейчас не видны кнопки экспорта в Datatable.

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 голосов
/ 05 декабря 2018

Согласно вашим правилам безопасности, ваши пользователи должны пройти аутентификацию для чтения (и записи) в базу данных.

С кодом, который вы показываете в своем вопросе (я полагаю, выдержка из всей вашей HTML-страницы), вы, похоже, не просите пользователей аутентифицироваться, поэтому вы не получаете никакой записи, когда вызапросите базу данных.

Вы должны либо интегрировать механизм аутентификации, например, используя FirebaseUI Auth (см. https://github.com/firebase/firebaseui-web),), либо, если ваша база данных находится в тесте, попробовать с "публичными" правилами, такими как:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...