Mam formularz, a gdy coś nie pójdzie zaraz po przesłaniu, chcę móc podawać użytkownikom komunikaty o błędach. Używam Sequelize jako mojego ORM, a obietnice zwrócone stają się trochę niechlujne ze wszystkimi zagnieżdżonymi kodami.Sposób zapobiegania wysoce zagnieżdżonemu kodowi w funkcji Sequelize w celu obsługi błędów?
Na przykład, jeśli mamy dwa modele UPDATE: User
i Photo
:
models.User.find({where: {name: 'bob' }}).then(function(user) {
if(user) {
user.updateAttributes({email: email}).then(function(user) {
models.Photo.find({where: { hash: hash}}).then(function(photo) {
if(photo)
res.json({"message":"updated"});
else
res.status(404).json({"error": "Could not find Photo"});
}).catch(err) {
res.status(500).json({"error": err});
});
}).catch(function(err) {
res.status(500).json({"error": err});
});
} else {
res.status(404).json({"error": "Could not find user"});
}
}).catch(function(err) {
res.status(500).json({"error": err});
});
A jeśli mam 10 pól w formularzu, aby aktualizować, cały kod zagnieżdżony może stać apodyktyczny.
Jakie zalecenia można podać, jeśli chcę mieć określone opisy błędów, ale także bardziej czytelny kod? Czy byłoby możliwe przechwycenie wszystkich błędów 404 i 500 w jednym bloku kodu, zamiast rozbijania ich tak jak ja?