我正在使用 Firebase 创建一个网络应用程序。我可以在我的 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、owner 和 isPrivate,这些都是未定义的。
我做错了什么?有什么建议么?先谢谢大家。
最佳答案
您正在执行异步操作,然后立即尝试在同步范围内读取返回值。该值未定义,因为尚未调用 on('value') 的回调。将警报移到回调中,您将看到实际值。
关于javascript - Firebase - myFirebase.child().once() 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23873157/