Возникли проблемы с получением данных из базы данных Firebase - PullRequest
1 голос
/ 05 мая 2020

Я хочу создать функцию входа в систему. Для проекта. Он работает, и все, кроме чтения данных, происходит после проверки, поэтому он входит в систему независимо от того, можно ли найти учетную запись. Я пробовал много вещей, и некоторые из них останавливали вход в систему, но я считаю, что это просто проблема несвоевременного чтения. Но тогда у него действительно есть проблемы с другим образцом кода, который я сделал. Я знаю, что это простой вопрос и, вероятно, действительно очевиден, но если бы кто-то мог поделиться некоторыми своими знаниями, которые были бы действительно полезны, я потратил несколько дней на это. Submit btn нажимает вызовы

function login_4() {
    logIt_3(L, 'login_4', 'submit button pressed');
    if (document.getElementById("inputPName0").value !== "" && document.getElementById("inputPName1").value !== "") {
        //Give this session player names
        pName0 = document.getElementById("inputPName0").value;
        pName1 = document.getElementById("inputPName1").value;
        //DB stuff
        name = newAccount_4('One', "0", pName0);
        logIt_3(L, 'login_4', name);
        if (name == false) {
            return false
        }   
        name = newAccount_4('Two', "1", pName1);
        logIt_3(L, 'login_4', name);
        if (name == false ) {
            return false
        }

        //Populate
        document.getElementById("pName0").innerHTML = pName0;
        document.getElementById("pName1").innerHTML = pName1;
        
        
        //Change screen
        document.getElementById("landingPage").style.display = "none";
        document.getElementById("gamePage").style.display = "block";
        logIt_3(L, 'login_4', 'logged in');
        return
    }
    //error message
    logIt_3(E, "login_4", "cant login without two player names");
    document.getElementById("loginErrMsg").innerHTML = "Please enter a Names for BOTH!";
    return
}

, который, в свою очередь, вызывает

function newAccount_4(_player, _playerNum, _pName) {
    name = dbRead_1("users", _pName);
    logIt_3(L, 'newAccount_4', name);
    if (name == false) {
        logIt_3(I, "newAccount_4", "ready to make new account.")
        document.getElementById("loginErrMsg" + _playerNum).innerHTML = "Please enter in new name for player " + _player;
        document.getElementById(("newAcc" + _playerNum)).style.display = "inline";
        return false
    }
    logIt_3(I, "newAccount_4", "Found name: " + _pName);
    return true
}

И теперь он показывает это в консоли. Я добавлю ниже свой код БД, чтобы видеть его чтение. Также добавьте журналы консоли, чтобы видеть порядок.

function dbRead_1(_path, _key) {
    logIt_3(L, "dbRead_1", "reading database for: " + _key);
    readStatus = "waiting...";
  
    dbRef = database.ref(_path + '/' + _key).once("value", function(snapshot) {
        if (snapshot.val() != null) {
            var childData = snapshot.val();
            dbRec = {
                name: childData.name,
                score: childData.score
            };
            highScore = childData.score;
            logIt_3(L, "dbRead_1", "read " + dbRec);
            document.getElementById("dbReadStatus").innerHTML = "ok";
            return true;
        
        } 
        else {
            logIt_3(L, "dbRead_1", "couldnt find record");
            document.getElementById("dbReadStatus").innerHTML = "no record";
            return false;
        }
    });
}

Я знаю, что журналы консоли не самые лучшие, но в них достаточно информации, чтобы иметь смысл, по крайней мере. Я скопировал и вставил их ниже

login_4: нажата кнопка отправки

3logging. js: 44 dbRead_1: чтение базы данных для: testpass

3logging. js: 44 newAccount_4: undefined

3logging. js: 38 newAccount_4: Найдено имя: testpass

3logging. js: 44 login_4: true

3logging. js: 44 dbRead_1: чтение базы данных для: testfail

3logging. js: 44 newAccount_4: undefined

3logging. js: 38 newAccount_4: Найдено имя: testfail

3логгинг. js: 44 login_4: true

3logging. js: 44 login_4: авторизован

3logging. js: 44 dbRead_1: read [object Object]

3логи. js: 44 dbRead_1: не удалось найти запись

...