Czytałem dokumentację firebase i używam bardzo asynchronicznego kodu. Chciałem wiedzieć, czy baza ogniowa wyrzuca błędy i/lub przekazuje dane o błędach w wywołaniach zwrotnych. O ile wiem, dokumentacja nie wspomina o tym. Z góry dziękuję za poradę:W jaki sposób można skutecznie radzić sobie z błędami przy użyciu bazy Firebase?
Odpowiedz
Firebase nie generuje obecnie żadnych błędów, które mogą być spowodowane przez programistów (poza wyjątkami, które są zgłaszane w przypadku złych danych wejściowych). Obecnie operacje w Firebase gwarantują sukces lub nigdy nie powodują zdarzeń. W przypadku problemów z łącznością sieciową Firebase po prostu nie będzie wyzwalać zdarzeń. Jest to oczekiwane zachowanie, ponieważ Firebase jest przeznaczony do pracy w trybie offline i automatycznie przywróci Ci szybkość po przywróceniu połączenia.
Należy pamiętać, że w przyszłości będziemy zgłaszać błędy związane z naruszeniami bezpieczeństwa i prawdopodobnie innymi rodzajami błędów. Interfejs API do przechwytywania i obsługi tych błędów nie został jeszcze napisany.
Musisz utworzyć funkcję auth, która obsługuje błędy. Zobacz świetny przykład poniżej 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');
}
});
}
ok, więc spróbuj złapać wokół deklaracji z danych wejściowych użytkownika ... Chyba mogę poradzić nieudaną operację (który nie zgłosi błąd) wysyłanie zamknięć timeout po określonym czasu - jak długo to powinno być, nie jestem pewien ... – Reinsbrain