我正在使用Firebase创建一个Web应用程序。我可以在Firebase中设置值,但如果我尝试读取它们,我会得到未定义的。这是我的代码:
var str = document.URL;
var padId = str.slice(55, 65);
alert(padId);
var myFirebase = new Firebase("https://collab-coding-privacy.firebaseio.com/" + padId);
var isPrivate;
var owner = "";
var pemial = "";
myFirebase.child("private").on('value', function(snapshot) {
if (snapshot.val() != undefined) {
isPrivate = true;
}
});
alert(isPrivate);
myFirebase.child("pemial").on('value', function(snapshot) {
if (snapshot.val() != null) {
pemail = snapshot.val();
}
});
alert(pemail);
myFirebase.child("owner").on('value', function(snapshot) {
if (snapshot.val() != null) {
owner = snapshot.val();
}
});
alert(owner);
当我加载页面时,它首先警告padId,我检查并存在于我的firebase中。然后它会警告pemail,所有者和isPrivate,这些都是未定义的。
我做错了什么?有什么建议?谢谢大家。
答案 0 :(得分:4)
您正在执行异步操作,然后立即尝试读取同步范围中的返回值。该值未定义,因为尚未调用on(' value')的回调。在回调中移动警报,您将看到实际值。