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 Firebase数据库数据检索有问题_Javascript_Firebase - Fatal编程技术网

Javascript Firebase数据库数据检索有问题

Javascript Firebase数据库数据检索有问题,javascript,firebase,Javascript,Firebase,我想创建一个登录函数。为了一个项目。它可以工作,除了读取数据外,所有操作都是在检查数据之后进行的,因此无论是否可以找到帐户,它都会登录。我已经尝试了很多方法,其中一些已经停止了登录,但我相信这只是没有及时阅读的问题。但在我编写的其他示例代码中,它确实存在问题。我知道这是一个简单的问题,而且可能非常明显,但如果有人能把他们的一些知识借给我,那真的会很有帮助,我就花了好几天的时间来解决这个问题。 提交btn电话 function login_4() { logIt_3(L, 'login_4

我想创建一个登录函数。为了一个项目。它可以工作,除了读取数据外,所有操作都是在检查数据之后进行的,因此无论是否可以找到帐户,它都会登录。我已经尝试了很多方法,其中一些已经停止了登录,但我相信这只是没有及时阅读的问题。但在我编写的其他示例代码中,它确实存在问题。我知道这是一个简单的问题,而且可能非常明显,但如果有人能把他们的一些知识借给我,那真的会很有帮助,我就花了好几天的时间来解决这个问题。 提交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
}
现在它在控制台中显示了这一点。我将在我的DB代码下面添加代码,以便可以看到它正在阅读。还要添加控制台日志,以便查看订单

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;
        }
    });
}
我知道控制台日志不是最好的,但它们至少有足够的信息来说明问题。我已将它们复制并粘贴到下面

登录4:按下提交按钮

3logging.js:44 dbRead_1:读取数据库for:testpass

3logging.js:44 newAccount_4:未定义

3logging.js:38 newAccount_4:找到的名称:testpass

3logging.js:44登录\u 4:true

3logging.js:44 dbRead_1:读取数据库for:testfail

3logging.js:44 newAccount_4:未定义

3logging.js:38 newAccount_4:找到名称:testfail

3logging.js:44登录\u 4:true

3logging.js:44登录\u 4:登录

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

3logging.js:44 dbRead_1:找不到记录


dbRead_1
函数没有返回任何内容。尝试添加
return dbRef=database…
它只返回true或false,因为它只检查特定的结果,因此,它要么存在要么不存在。更重要的是,如果您可以看到控制台日志,它返回的时间不够快,因此它会自动假设它找到了名称
dbRead\u 1
函数没有返回任何内容。尝试添加
return dbRef=database…
它只返回true或false,因为它只是检查一个特定的结果,所以它要么存在要么不存在。更重要的是,如果您可以看到控制台日志,它返回的时间不够快,因此它会自动假设它找到了名称