Firebase - myFirebase.child()。once()返回undefined

时间:2014-05-26 15:13:09

标签: javascript undefined firebase


我正在使用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,这些都是未定义的。

我做错了什么?有什么建议?谢谢大家。

1 个答案:

答案 0 :(得分:4)

您正在执行异步操作,然后立即尝试读取同步范围中的返回值。该值未定义,因为尚未调用on(' value')的回调。在回调中移动警报,您将看到实际值。