如何或如何使用firebase有效地处理错误?

时间:2012-07-12 18:54:19

标签: javascript asynchronous firebase

我一直在阅读firebase文档,它使用了非常多的异步代码。我想知道firebase是否在回调中抛出错误和/或传递错误数据。据我所知,文档没有提到它。 提前感谢您的建议

2 个答案:

答案 0 :(得分:5)

Firebase目前不会产生开发人员可消耗的错误(在输入错误的情况下抛出异常)。目前Firebase操作保证成功或永不触发事件。在网络连接问题的情况下,Firebase将不会触发事件。这是预期的行为,因为Firebase旨在在离线模式下工作,并且一旦重新建立连接,它将自动使您加速。

请注意,将来我们会针对安全违规和可能的其他错误类型抛出错误。用于捕获和处理这些错误的API尚未编写。

答案 1 :(得分:1)

您需要创建一个处理错误的auth函数。请参阅下面的jsFiddle以获得一个很好的例子。

function initAuth(ref) {
        return new FirebaseSimpleLogin(ref, function (err, user) {
            // if there is an error then display it 
            if (err) {
                displayError(err);
            } else if (user) {
                // we only want to log people in through the email/password provider
                if( user.provider !== 'password' ) {
                   auth.logout();   
                }
                else {
                    // logged in!
                    uid = user.uid;
                    // save the user to our firebase
                    ref.child(user.uid).set({
                        id: user.id,
                        uid: user.uid,
                        email: user.email
                    });  
                    // switch over the the user info screen
                    switchView('userInfo');
                }
            } else {
                // logged out!
                console.log('not logged in');
            }
        });
    }

http://jsfiddle.net/firebase/wPBj5/embedded/result,js/