无法访问AngularJS $ http错误响应数据

时间:2019-05-05 02:47:14

标签: node.js angularjs angular-promise angularjs-http

我正在运行一个函数,当我正确输入数据时,它可以完全满足我的需要,但是当提供的数据无效时,我想向用户返回错误消息。如您在图片中看到的,请求返回了我想显示的消息,但我无法访问它!

我的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;
      });
    }

我尝试记录错误,res,响应,消息,它们都给我一个错误。如果删除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 个答案:

答案 0 :(得分:1)

工厂有问题:

  

错误

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

更好

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

当promise错误处理程序未能重新引发错误时,该函数将返回undefined。这会将被拒绝的承诺转换为价值为undefined的已实现承诺。

有关更多信息,请参见