【发布时间】:2017-08-08 06:36:26
【问题描述】:
来自我在这个网站上的recent question(在我诉诸“承诺”技术之前),我想出了一个想法,将变量存储在 firebase 数据库中,而不是在 javascript 中将其设为全局变量,这样我可以在任何函数中使用它(即使在异步函数中)。所以我做了这个代码:
function logIn(){
var loggedUname = $("#loginUname").val();
var loggedPword = $("#loginPword").val();
var tailorRef = firebase.database().ref('tailors');
var keyRef = firebase.database().ref();
tailorRef.on('value', function(data){
data.forEach(function(childData){
if ( (loggedUname == childData.val().tUsername) && (loggedPword == childData.val().tPassword) ){
currentKey = childData.key;
}
});
keyRef.update({currentTailor: currentKey});
alert("key = " + keyRef.currentTailor);
});
}
.update 方法成功,因为它为登录用户存储了相应的密钥:
但是当我尝试使用警报检索它时,它显示未定义!我不明白,因为我假设我是从数据库的根引用调用的,这是我去的最低限度。
我尝试为 keyRef 创建一个单独的 .on() 函数,但结果仍然相同。
keyRef.on('value', function(data){
alert(data.currentTailor);
});
我是否以错误的方式调用数据?
【问题讨论】:
-
我不知道 Firebase,但我敢打赌
keyRef.update()是异步的。 -
firebase.googleblog.com/2016/01/… 尝试使用 .then(function(){ alert()}) 方式
-
@Barmar 我在我的 signUp 函数中使用了 .update() 并且我成功地检索了存储在这个 login() 函数中的数据。如果是你说的,我应该无法在这个函数中检索 tUsername 和 tPassword
标签: javascript firebase firebase-realtime-database