Невозможно получить доступ к данным ответа AngularJS $ http - PullRequest
1 голос
/ 05 мая 2019

Я запускаю функцию, и когда я правильно ввожу данные, она делает именно то, что мне нужно, но при наличии неверных данных я хочу вернуть сообщение об ошибке пользователю. Как вы можете видеть на рисунке, запрос возвращает сообщение, которое я хочу отобразить, но я не могу получить к нему доступ!

Мой контроллер AngularJS:

 vm.avpLogic = function(last, avp_id) {
      console.log("Checking AVP Registration");
      alert("Checking AVP Registration");
      registrationDataFactory.checkAVPReg({ last: last, id: avp_id })
      .then(function(response){
        if(!response) {
          console.log(error);
          alert(error);
        }
          console.log(" frontend RESPONSE ");
          console.log(response);
          vm.avp = response;
          vm.addPlayer(vm.registration, vm.avp)
      })
      .catch(function(response){
      // THE RESPONSE COMES BACK HERE FOR INVALID DATA
        console.log(response.body);  // THROWS ERRORS, see pic
        console.log("An error occurred, but we don't know how to log it.", message);
        alert("FAILED AVP CHECK.  Name and ID must match exactly, and they must be active during the rumble.");
        return error;
      });
    }

Я пробовал регистрировать ошибку, разрешение, ответ, сообщение, и все они приходят, дают мне ошибку. Если я удаляю строки console.log, появляется всплывающее предупреждение с сообщением FAILED AVP CHECK. Я хочу, чтобы это было на заказ, с сообщением, отображаемым в окне ответа.

Трассировка в обратном направлении, мои фабрики данных console.logs просто отлично:

function complete(response) {
    console.log("data factory response SUCCESS!");
    return response;
}

function failed(error) {
    console.log("API error response: ", error);
}

Когда я смотрю в консоль, я просто вижу объект ошибки, к которому я могу получить доступ, но, похоже, не могу.

Часть моей функции NodeJS, отправляющая ошибку:

   return res.status(422).send({
    message: 'Missing parameters!  Need name and AVP ID'
  }); 

1 Ответ

1 голос
/ 05 мая 2019

На заводе есть проблемы:

ОШИБКА

 function failed(error) {
    console.log("API error response: ", error);
}

Лучше

function failed(error) {
    console.log("API error response: ", error);
    //RE-THROW error
    throw error;
}

Когда обработчику ошибок обещания не удается повторно вызватьошибка, функция возвращает undefined.Это преобразует отклоненное обещание в выполненное обещание со значением undefined.

Для получения дополнительной информации см.

...