Witaj,
po stronie serwera przykładowo:
router.post('/change-password', function (req, res) {
var currentPassword = req.body.currentPassword
var newPassword = req.body.newPassword
var userId = req.decoded.userId
if (!currentPassword || !newPassword) return res.status(401).send({success: false, message: 'No credentials provided.', errorCode: '0004'})
if (currentPassword === newPassword) return res.status(401).send({success: false, message: 'Unspecified error.', errorCode: '0000'})
Po stronie klienta możesz obsłużyć błędy np. w taki sposób:
function CustomError (errorCode) {
this.name = 'CustomError'
this.errorCode = errorCode || ''
var error = new Error(this.errorCode)
error.name = this.name
this.stack = error.stack
}
CustomError.prototype = Object.create(Error.prototype)
angular.module('app').factory('$exceptionHandler',
function ($injector) {
return function (exception) {
var modalService = $injector.get('modalService')
var $translate = $injector.get('$translate')
modalService.showModal({
templateUrl: 'views/error.html',
controller: function (close) {
var self = this
if (exception) {
if (exception.errorCode) {
$translate([exception.errorCode]).then(function (translations) {
self.message = translations[exception.errorCode]
})
} else if (exception.message) self.message = exception.message
else self.message = exception.substring(0, 100)
} else {
$translate(['0000']).then(function (translations) {
self.message = translations['0000']
})
}
self.close = function () {
$('.modal-backdrop').remove()
close()
}
},
controllerAs: 'error'
}).then(function (modal) {
modal.element.modal()
})
}
}
)
Kod zawiera moje dodatki - pokazanie błędu w wyskakującym oknie.
Natomiast samo odebranie błędu:
var request = {
method: 'POST',
url: String.format('{0}system/users/change-password', config.apiBaseUrl),
headers: {'token': localStorage.token, 'Content-Type': 'application/json'},
data: {currentPassword: self.currentPassword, newPassword: self.user.password}
}
$http(request).then(function () { close() },
function (e) { ShowError(e) })
No i funkcja ShowError:
function ShowError (e) {
if (e.data.errorCode) throw new CustomError(e.data.errorCode)
else throw new Error(e.data)
}
Generalnie chodzi o wykorzystanie $exceptionHandler w NG.
M.