Как добавить данные Firebase в массив JavaScript - PullRequest
0 голосов
/ 11 апреля 2020

enter image description here

У меня есть база данных Firebase, и я пытаюсь добавить данные в массив.

Проблема в том, что каждое значение снимка в массиве с индексом 0.

var id = snap.child("id").val();

var emptyArray = [];
emptyArray.push(id);
console.log(emptyArray[0]);

Результат: 1 2 3 4 5 6

var emptyArray = [];
emptyArray.push(id);
console.table(emptyArray[1]);

Результат: не определено

The l oop Я пытаюсь использовать

for(var i = 0; i < id.length; i++) {
       emptyArray.push(id[i]);
   }

Я только что попытался сделать id массивом для работы с l oop, но все равно он возвращает все данные с индексом 0

var id = [snap.child("id").val()];

Полный код для Firebase

$(document).ready(function(){
var pageNumber = document.getElementById("pageNumber").innerHTML;
var rootRef = firebase.database().ref().child("data/p"+pageNumber+"/users/");
rootRef.on("child_added", snap => {
   var id = [snap.child("id").val()];

   var emptyArray = [];
   for(var i = 0; i < id.length; i++) {
       emptyArray.push(id[i]);
   }
    console.log(typeof emptyArray[0]);    
 })
});

Редактировать: я очень новичок в JavaScript / HTML

Редактировать 2: Добавлен oop Я только что попробовал

Правка 3: Попытка сделать идентификатор массивом

Правка 4: Полный код

1 Ответ

1 голос
/ 11 апреля 2020

Хорошо, я думаю, что происходит то, что это событие вызывает событие child_added, поэтому снимок snap - это просто снимок для одного пользователя.

Каждый раз, когда вы получаете результат для одного пользователя вы создаете новый массив и просто вводите идентификатор для этого пользователя, затем он выходит из области видимости в конце обратного вызова on.

Вместо этого вам нужно создать массив вне обратного вызова и просто добавить к этому, вот так:

$(document).ready(function(){
var pageNumber = document.getElementById("pageNumber").innerHTML;
var rootRef = firebase.database().ref().child("data/p"+pageNumber+"/users/");
var emptyArray = []; // Create the array outside the callback
rootRef.on("child_added", snap => {
   var id = snap.child("id").val();
   emptyArray.push(id); // Add the user's ID to the array
 });
console.log(emptyArray); // -> [1, 2, 3, 4, 5, 6]
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...