Поймать статус 500 в AngularJS из API REST

0

У меня есть Угловое приложение, которое потребляет от API REST create в Node JS, проблема в том, что я не уверен в лучшей форме для связи с ошибкой клиенту, я полагаю, что это сообщение с статусом 500, но в этом случае, как cath this сообщение в Angular?

например, у меня есть следующий метод в узле

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

это сервис, который используется в Угловом, чтобы потреблять

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
Лучший ответ

По-моему, это простая причина.

Вы используете обратный вызов .then(). Нет, если вы посмотрите в документации на $resource вы увидите, что этот обратный вызов выполняет две функции:

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

Ошибка 500 обычно попадает в обратный вызов ошибки.

Afaik вы можете использовать .catch(...) если вы не ожидаете тела в .catch(...) успеха, и вы опускаете обратный вызов успеха.

См. Https://docs.angularjs.org/api/ng/service/$q, где вы можете найти полную документацию об API обещаний.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню