我有以下js代码,我尝试登录blog_root对象,然后使用我的user_root通过user_root.on(“child_added”,...)来监听任何更改
var root = new Firebase( /*my firebase url*/);
var blog_root = root.child("blog");
var user_root;
console.log("====");
blog_root.authAnonymously(function(err, authData) {
if(err){
console.log("user not authenticated?"+err);
}else{
console.log("user authenticated?"+authData.uid);
if(authData){
user_root = blog_root.child(authData.uid);
user_root.set(authData);
}
}
},{
remember: "sessionOnly"
});
user_root.on(
"child_added", //event_name
function(snapshot) {
//called for each existing element and each new element
}
特别是使用此代码,我的user_root对象显示为未定义。我检查了我的数据,并且匿名用户已成功添加到blog_root,但我似乎无法收听user_root上的更改。
我收集的是user_root.on(“child_added”)事件在我的身份验证语句中被触发,但这对我没有意义,因为user_root在身份验证语句中被初始化。
任何线索?
答案 0 :(得分:3)
authAnonymously
方法是异步的,并且在首次到达user_root.on('child_added', ...)
后调用回调。尝试将此侦听器移动到authAnonymously
的回调中。
另请注意,每次拨打authAnonymously()
时,您都会创建新会话。默认情况下,会话会自动保留。要检查用户是否已经过身份验证,请尝试ref.getAuth()
,如果用户未经身份验证(authAnonymously()
),则仅调用ref.getAuth() === null
。