Javascript 赢得的数据';t加载firebase.google.com数据库
我正在尝试将我的玩家的用户名保存并加载到firebase数据库,但由于某些原因,它无法工作。当我使用警报进行调试时,用户名为空。我在html文件中的标记中初始化firebase。这是我保存和加载用户名的代码。保存工作,但不加载:Javascript 赢得的数据';t加载firebase.google.com数据库,javascript,firebase,firebase-realtime-database,firebase-authentication,Javascript,Firebase,Firebase Realtime Database,Firebase Authentication,我正在尝试将我的玩家的用户名保存并加载到firebase数据库,但由于某些原因,它无法工作。当我使用警报进行调试时,用户名为空。我在html文件中的标记中初始化firebase。这是我保存和加载用户名的代码。保存工作,但不加载: var signedIn = false; var player; var isAnonymous; var userID; var username = null; window.onload = function() { auth.onAuthState
var signedIn = false;
var player;
var isAnonymous;
var userID;
var username = null;
window.onload = function() {
auth.onAuthStateChanged(function(user) {
//var user = firebase.auth().currentUser;
if (user) {
// User is signed in.
player = firebase.auth().currentUser;
signedIn = true;
isAnonymous = user.isAnonymous;
userID = user.uid;
refreshUsername();
} else {
// No user is signed in.
signedIn = false;
window.location.href = "index.html";
}
});
}
function refreshUsername() {
if (username != null && username != "") {
updateUsername();
document.getElementById("username-text").innerHTML += username;
} else {
updateUsername();
alert("old Not working: " + username);
var newName = getRandomName();
document.getElementById("username-text").innerHTML += newName;
saveUsername(newName);
username = newName;
alert("Not working: " + username);
}
}
function saveUsername(name) {
firebase.database().ref('users/' + userID).set({
username: name
});
}
function updateUsername() {
/*firebase.database().ref('/users/' + userID).once('value').then(function(snapshot) {
username = snapshot.val().username;
});*/
firebase.database().ref('users/' + userID).once('value').then(function(snapshot) {
username = snapshot.val().username;
});
}
我设法使它工作起来。firebase的东西花了很长时间,所以在更新用户名之前,其余的代码都已经完成了。我使用回调来修复它。这是我的工作代码:
var signedIn = false;
var player;
var isAnonymous;
var userID;
var username = null;
window.onload = function() {
auth.onAuthStateChanged(function(user) {
//var user = firebase.auth().currentUser;
if (user) {
// User is signed in.
player = firebase.auth().currentUser;
signedIn = true;
isAnonymous = user.isAnonymous;
userID = user.uid;
refreshUsername();
} else {
// No user is signed in.
signedIn = false;
window.location.href = "index.html";
}
});
}
function refreshUsername() {
document.getElementById("username-text").innerHTML = "Username: " + "Loading...";
updateUsername(function() {
if (username != null) {
document.getElementById("username-text").innerHTML = "Username: " + username;
} else {
randomUsername();
}
});
}
function saveUsername(name) {
firebase.database().ref('users/' + userID).set({
username: name
});
}
function updateUsername(_callback) {
firebase.database().ref('users/' + userID).once('value').then(function(snapshot) {
username = snapshot.val().username;
_callback();
});
}
将错误处理程序添加到您的侦听器中,并查看它们输出的内容?@kato I在其工作的方法中执行了此操作,但返回Null once方法或set方法中没有错误处理程序。