从API REST中捕获AngularJS中的状态500

时间:2015-12-22 16:20:05

标签: angularjs node.js api

我有一个Angular应用程序在Node JS中使用API​​ REST创建,问题是我不确定将错误传达给客户端的最佳形式,我想这是发送状态为500但在这种情况如何在Angular中传达此消息?

例如我在Node

中有以下方法
router.post('/create', function(req, res, next) {
  models.form.create(req.body

  ).then(function(form) {
    res.send(form.dataValues)  
  }).catch(function(error) {
    console.log (error);
    res.status(500).send(error);
  });
});

这是在Angular中使用的服务

createForm : function (form) {
    var auxResource = $resource(localPath + 'create');
    return new auxResource(form).$save()
         .then(function (formCreated) { 
            console.log(formCreated);
            formCreate = formCreated;
         })

},

控制器方法

this.create = function create () {
    formRESTService.create($scope.form)
         .then(function () {  
               $location.path("/formList");             
          })
           .catch(function (error) {
              console.log("entre al cath");
              console.log("ENTREEEEE" + error);
          });
}

问题是,角度永远不会导致错误我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我认为有一个简单的原因。

您正在使用.then()回调。不,如果您查看$resource的文档,您会看到,此回调需要两个函数:

.then(function(data) {...}, function(error) {...});

错误回调通常会捕获500错误。

如果您不希望成功回调中有正文并且省略成功回调,那么您只能使用.catch(...)

请参阅https://docs.angularjs.org/api/ng/service/$q,在那里可以找到有关promise API的完整文档。