У меня есть Угловое приложение, которое потребляет от 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);
});
}
проблема в том, что угловой никогда не приводит к ошибке, как я могу это сделать?
По-моему, это простая причина.
Вы используете обратный вызов .then()
. Нет, если вы посмотрите в документации на $resource
вы увидите, что этот обратный вызов выполняет две функции:
.then(function(data) {...}, function(error) {...});
Ошибка 500 обычно попадает в обратный вызов ошибки.
Afaik вы можете использовать .catch(...)
если вы не ожидаете тела в .catch(...)
успеха, и вы опускаете обратный вызов успеха.
См. Https://docs.angularjs.org/api/ng/service/$q, где вы можете найти полную документацию об API обещаний.