我正在编写我的登录模块,以便当用户输入用户名和密码时,它将获得输入并在javascript中处理它。我使用.forEach函数,以便用户名和密码将查找其匹配的用户并将其唯一键存储在GLOBAL VARIABLE中,以便我以后可以使用它来为登录用户进行数据操作。
首先,我在函数外声明了变量currentKey。
var currentKey = "";
然后是登录功能,如下所示:
function logIn(){
var loggedUname = $("#loginUname").val();
var loggedPword = $("#loginPword").val();
var tailorRef = firebase.database().ref('tailors');
tailorRef.on('value', function(data){
data.forEach(function(childData){
if ( (loggedUname == childData.val().tUsername) && (loggedPword == childData.val().tPassword) ){
currentKey = childData.key;
}
});
alert(currentKey);
});
}
如果我在输入注册的用户名和密码后按下登录按钮,它会通过警报显示相应的按键。
但是,当我将alert(currentKey);
置于.on()方法之外时,如下所示:
tailorRef.on('value', function(data){
data.forEach(function(childData){
if ( (loggedUname == childData.val().tUsername) && (loggedPword == childData.val().tPassword) ){
currentKey = childData.key;
}
});
});
alert(currentKey);
... currentKey显示为UNDEFINED!
我尝试在.forEach中创建一个set函数,但它仍然是相同的。我猜测唯一键没有正确存储在全局变量currentKey中。
任何人都知道我的代码中发生了什么?
编辑:很抱歉我之前没有说明我的主要问题。我想要的是将.forEach中的密钥存储在全局var currentKey中,这样当我在函数外部发出警报时,密钥仍将存在于var currentKey中。我的计划是在我的javascript中使用其他函数中存储的密钥,而不仅仅是在logIn()函数中。所以我认为声明函数外部的var会使它全局可用和可更新。如何使相应的密钥在我的javascript文件中全局可用?