При рассмотрении приложения AngularJS меня поразило, что я действительно не знаю, как обрабатывать ошибки из базы данных на уровне контроллера.
У нас есть трехуровневая структура controller
-> service
-> rest
Служба Rest обрабатывает вызовы к внутренней базе данных и возвращает услугу промежуточного уровня, которая в большинстве случаев передает ее контроллеру
myController.js
myService.getdata().then(function (result) {
$scope.data = result
})
myService.js
this,getdata = function () {
return RestService.get('url/to/my/data')
}
RestService
успешно возвращает ошибки из Back End API (через hapi / Boom)и они могут быть пойманы либо myService
, либо myController
.То, с чем я борюсь, это создание обработчика ошибок в службе, а не в контроллере.
Моя лучшая попытка в контроллере заключается в следующем:
.then(function (result) {
$scope.data = result
// do something with the data
})
.catch(function (error) {
console.error('data could not be loaded')
})
.finally(function () {
// tidy up here
})
Я бы предпочел переместитьобработка ошибок в сервисе, но я не уверен, как контроллер будет ожидать получения данных для обработки ...