Firebase с Web: использование идентификатора пользователя в качестве ссылки приводит к ошибке: Uncaught TypeError: Невозможно прочитать свойство 'on' из неопределенного - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть ошибка со ссылкой на базу огня, по какой-то причине она говорит, что ссылка не определена, и я не могу понять, почему, если бы вы могли чем-нибудь помочь, это было бы здорово.

var eventtable = document.getElementById("eventtable");
var dateofevent = document.getElementById("dateofevent");
var datetext = dateofevent.textContent;
var user = firebase.auth().currentUser;
var firebaseRef;

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    var email = user.email;
    userId = user.uid;
    document.getElementById("welcomeuser").innerHTML = "Welcome " + email;
firebaseRef = firebase.database().ref().child("Events").child(userId).child(datetext);

} else {
     window.location.href="login.html";
}
});

firebaseRef.on("value", function(snapshot) {

var content = '';

snapshot.forEach(function(childSnapshot) {
    var key = childSnapshot.key;
    var val = childSnapshot.val();

    content +='<tr>';
    content += '<td>' + val.Name + '</td>';
    content += '<td>' + val.Description + '</td>';
    content += '</tr>';
});
    eventtable.append(content);
}, function(error) {
    console.error(error);
});

1 Ответ

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

Вы пытаетесь использовать firebaseRef, прежде чем он получит значение.

onAuthStateChanged является асинхронным, что означает, что он немедленно возвращается, и передаваемый вами обратный вызов не выполняется до тех пор, пока не станет доступна информация об аутентификации.Это означает, что firebaseRef не имеет значения, пока не будет вызван.Ваш код продолжает предполагать, что firebaseRef имеет значение.

Если вы хотите использовать firebaseRef, вы должны использовать его только после того, как он назначен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...