как отловить ошибку в firestore при отсутствии интернета - PullRequest
0 голосов
/ 26 мая 2018

Я недавно обновил свое приложение с firebase до firestore, но застрял в режиме оффлайн.Я использую response-native-firebase, чтобы интегрировать FireStore и отключить его постоянство, но все еще не получаю никакой ошибки при отсутствии интернета.Это мой код для удаления данных, но catch никогда не получит ошибку, когда нет интернета, если обещание не выполнено.

firebase.firestore().collection('d').doc(deviceid).delete().then(function () {
                                    console.log("Device Deleted");
                                    that.setState({
                                        loading: false
                                    });
                                    Toast.show('Device Deleted Succesfully', {
                                        duration: Toast.durations.SHORT,
                                        position: Toast.positions.TOP,
                                        shadow: true,
                                        animation: true,
                                        hideOnPress: true,
                                        delay: 0,
                                    });

                                }).catch(function (err) {
                                    console.log(err);
                                    that.setState({
                                        loading: false
                                    });
                                })

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Создайте свою собственную вспомогательную функцию для удаления, которая выдает ошибку, если нет подключения к Интернету.Вы можете сделать API чище, не вызывая .collection(), а просто передав ему полный путь d + deviceid.

function onlineOnlyDelete(path) {
  if(!deviceApi.hasInternet()) throw 'No Internet, no delete'
  return firebase.firestore().doc(path).delete()
}

замените firebase.firestore().collection('d').doc(deviceid) на onlineOnlyDelete(d+deviceid), и вам будет хорошо идти

0 голосов
/ 26 мая 2018

Firestore и Realtime Database SDK не выдают ошибок, когда нет сетевого подключения.Они будут молча повторять попытку подключения в надежде, что устройство скоро восстановит сетевое подключение.Причина этого заключается в том, что большинство разработчиков не хотят, чтобы их приложения выглядели испорченными только потому, что пользователь заходил в туннель и возвращался назад или переключался между мобильными вышками таким образом, что принудительно выполнялся сброс сети.

InЧтобы эффективно использовать онлайновую базу данных, устройство должно быть подключено большую часть времени, и в этой ситуации оптимизируется SDK.

...