У меня есть несколько строк кода, которые извлекают данные из базы данных Firebase в реальном времени. Я хочу, чтобы они взяли имя из хранящихся там объектов, а затем использовали его, чтобы выбрать случайное имя. Сделайте это, сначала извлекая все объекты и сохраняя значения имен в массиве. Затем я получаю общее количество объектов в этой базе данных и использую функцию random для генерации случайного числа, а затем выбираю это значение из массива. Я не уверен, почему это не ведет себя как следует. Вот код, который я использую:
const dbRefObject = firebase.database().ref().child('names');
dbRefObject.on('value', gotData);
var names = [];
function gotData(data) {
dbRefObject.once('value', function (snapshot) {
snapshot.forEach(function (childSnapshot) {
var childData = childSnapshot.val().names;
names.push(childData);
})
namesUpdated(names);
}
)
return names;
}
function namesUpdated(names) {
randomNumber = randomNumberGenerator();
console.log(randomNumber);
console.log(names[randomNumber]);
return names[randomNumber];
}
function randomNumberGenerator() {
dbRefObject.on('value', (snap) => {
var totalRecord = snap.numChildren();
return Math.floor(Math.random() * totalRecord);
});
}
Я не уверен, почему это не работает, так как когда я распечатываю массив имен в функции gotData, он работает нормально. Однако, когда я пытаюсь использовать это в namesUpdated, он говорит, что значение не определено. Аналогично, randomNumberGenerator работает нормально, так как возвращает значение в этой функции, но не работает, когда я использую его в namesUpdated. Эта функция выглядит хорошо для меня, поэтому я не уверен, почему она не работает. Заранее благодарю за любую помощь.