I am trying to improve my code in node.js / sail.js and I am fighting server response in promisses.
When you look at the first .then
function you can see that method returns false
in case of forbidden access
or notFound
. Then, in the next .then
functions I must check if the return type is === false
to skip to section and avoid sending http headers twice. Can this be improved somehow, to skip all next .then
methods in case of failure? I can throw an Exception to go in the last .catch
but then there must be a case
to switch between all possible states. (i.e. forbidden, serverError or even not found)
Notification.findOne({id: req.param('id')})
.then(function(notification) {
if (!notification) {
res.notFound();
return false;
}
if (notification.triggeredBy != req.session.user.id) {
res.forbidden();
return false;
}
return notification;
})
.then(function(notification) {
if (notification === false) {
return false;
}
return Notification.update(notification.id, actionUtil.parseValues(req));
})
.then(function(notification) {
if (notification === false) {
return false;
}
res.json(notification);
})
.catch(function(err) {
sails.log(err);
res.serverError({message: 'A server error occurred.'});
})
No comments:
Post a Comment