【发布时间】:2017-09-19 13:31:55
【问题描述】:
我正在尝试检索已登录的用户 ID,以使用 firebase 从数据库中检索与他相关的信息....
在我的 HTML 页面内的标签中,我有以下内容 -
var user
var uid;
firebase.auth().onAuthStateChanged(user => {
if(!user) {
window.location = 'login.html'; //If User is not logged in, redirect to login page
} else {
user = firebase.auth().currentUser;
uid = user.uid;
}
});
console.log("UID: " + uid);
而且,它似乎在检查用户是否已登录...因为如果我从主页登录并转到该页面,它就可以工作并转到该页面,但是如果我进入未登录页面,跳转到登录页面...
但是,当我尝试执行该日志语句时,它会将 uid 打印为未定义...知道为什么这不起作用吗?
【问题讨论】:
-
你把
console.log()放在哪里了? -
更新问题
-
这是预期的行为。
onAuthStateChanged()回调中的代码运行时间与其周围的代码不同。所以uid只会在回调 inside 中有正确的值。见stackoverflow.com/questions/6847697/… -
是的,这就是为什么我认为如果我设置一个我在回调之外声明的变量,它会起作用......但不是吗?猜猜你的链接会告诉我怎么做..
标签: javascript firebase web firebase-realtime-database firebase-authentication