Не удалось отловить ошибку для .on () в firebase - PullRequest
0 голосов
/ 22 ноября 2018

Я использую приведенный ниже код для получения значения

try {
  discountFbRef.orderByChild('discode').equalTo(code).on("value", function(snapshot) {
    console.log('snapshot val discode', snapshot.val().discode);

    if (snapshot.exists()) {
      snapshot.forEach(function(data) {

        $scope.discountApplicable.id = data.val().id;


      });
    } else {
      console.log('It doesnt exist');
    }
  }, function(error) {
    console.log(error);
  });
} catch (error) {
  console.log('error occured during search', error);
}

Когда есть значение, равное строке поиска, все работает нормально.Но когда я пытаюсь найти ключевое слово, которое не существует в «discode», оно выдает

Uncaught TypeError: Невозможно прочитать свойство 'discode' со значением null

Forпо какой-то причине, хотя я пытаюсь поймать ошибку с помощью try-catch и функцию ошибки, я не могу ее поймать.Мне нужен способ обработать ошибку и показать сообщение, что строка поиска не существует.

1 Ответ

0 голосов
/ 22 ноября 2018

Итак, функции, которые передаются второму и третьему параметрам .on, называются функциями обратного вызова.Это означает, что они могут быть вызваны после (асинхронно) выполненного вами кода.Вы захотите переместить свой try-catch внутрь функции обратного вызова.

function handleValueSuccess(snapshot) {
  try {
    console.log('snapshot val discode', snapshot.val().discode);

    if (snapshot.exists()) {
      snapshot.forEach(function(data) {
        $scope.discountApplicable.id = data.val().id;
      });
    } else {
      console.log("It doesn't exist");
    }
  } catch (error) {
    console.log('error occurred during search', error);
  }
}

function handleValueError(error) {
  console.log('error occurred on value', error);
}

discountFbRef
  .orderByChild('discode')
  .equalTo(code)
  .on("value", handleValueSuccess, handleValueError);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...