Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 赢得的数据';t加载firebase.google.com数据库_Javascript_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Javascript 赢得的数据';t加载firebase.google.com数据库

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

我正在尝试将我的玩家的用户名保存并加载到firebase数据库,但由于某些原因,它无法工作。当我使用警报进行调试时,用户名为空。我在html文件中的标记中初始化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() {
    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方法中没有错误处理程序。