Reinsbrain
Reinsbrain

Reputation: 2581

How does or how can you effectively handle errors using firebase?

I've been reading the firebase documentation and it is very much asynchronous code that is used. I wanted to know if firebase is throwing errors and/or passing error data in the callbacks. As far as I can tell, the documentation makes no mention of it. Thanks in advance for advice

Upvotes: 7

Views: 3807

Answers (2)

regmi
regmi

Reputation: 386

You need to create a auth function that handles the errors. See the jsFiddle below for a great example.

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/

Upvotes: 1

Andrew Lee
Andrew Lee

Reputation: 10185

Firebase doesn't produce developer-consumable errors at the moment (outside exceptions that are thrown for bad inputs). Currently Firebase operations are guaranteed to either succeed or never trigger events. In the case of network connectivity issues, Firebase will simply not trigger events. This is expected behaviour, as Firebase is designed to work in offline mode, and it will automatically bring you up to speed once a connection has been re-established.

Note that in the future we will throw errors for security violations and possibly other error types. The API for catching and handling these errors has not been written yet.

Upvotes: 5

Related Questions