Я хочу создать функцию входа в систему. Для проекта. Он работает, и все, кроме чтения данных, происходит после проверки, поэтому он входит в систему независимо от того, можно ли найти учетную запись. Я пробовал много вещей, и некоторые из них останавливали вход в систему, но я считаю, что это просто проблема несвоевременного чтения. Но тогда у него действительно есть проблемы с другим образцом кода, который я сделал. Я знаю, что это простой вопрос и, вероятно, действительно очевиден, но если бы кто-то мог поделиться некоторыми своими знаниями, которые были бы действительно полезны, я потратил несколько дней на это. 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: не удалось найти запись