Я пытаюсь улучшить свой код в node.js/sail.js, и я борюсь с ответом сервера в обещаниях.
Когда вы смотрите на первую функцию .then
, вы можете увидеть, что метод возвращает false
в случае forbidden access
или notFound
. Затем, в следующих функциях .then
, я должен проверить, является ли тип возврата === false
, чтобы перейти к разделу и избежать отправки заголовков HTTP дважды. Может ли это быть каким-то образом улучшено, чтобы пропустить все следующие методы .then
в случае сбоя? Я могу бросить исключение, чтобы перейти в последний .catch
, но тогда должно быть case
для переключения между всеми возможными состояниями. (т.е. запрещено, serverError или даже не найден)
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.'});
})