Skip to main content
Code Review

Return to Question

edited tags
Link
AlexV
  • 7.4k
  • 2
  • 24
  • 47
Source Link

Better code for error handling in NodeJs and Express

I have this code for a post request, when the user wants to change his password. Because of all the cases and the following page renders the code came out really ugly. Is there a better way to structure this? (It works fine and does what I want.)

// Check if old password is correct
 SQL.getUserFromDB(request.session.username).then(function (results) {
 // Hash and compare with stored hash
 bcrypt.compare(request.body.oldPw, results[0].password, function (error, result) {
 // Log possible error
 if (error) console.log(error);
 if (result === true) {
 // Check if new passwords are both the same
 if (request.body.newPw === request.body.newPw2) {
 // Call mysql function
 SQL.changeUserPassword(request.session.username, request.body.newPw).then(function () {
 response.render('pages/changePassword', {
 user: request.session.username,
 text: 'Passwort erfolgreich geändert.'
 });
 }).catch(function (error) {
 console.log(error);
 if (error == 'pw') {
 response.render('pages/changePassword', {
 user: request.session.username,
 text: 'Neues Passwort zu unsicher.'
 });
 } else {
 // Render error page
 response.render('pages/changePassword', {
 user: request.session.username,
 text: 'Fehler beim Ändern des Passworts.'
 });
 }
 });
 } else {
 // Render error page
 response.render('pages/changePassword', {
 user: request.session.username,
 text: 'Neue Passwörter stimmen nicht überein!'
 });
 }
 } else {
 // Render error page
 response.render('pages/changePassword', {
 user: request.session.username,
 text: 'Altes Passwort stimmt nicht überein!'
 });
 }
 });
 // Catch sql errorsFehler beim Ändern des Passworts
 }).catch(function (error) {
 if (error) console.log(error);
 response.render('pages/errors/loginFailed');
 });

I tried just setting the text in the different cases and rendering one page with the text at the bottom, this didn't work however.

default

AltStyle によって変換されたページ (->オリジナル) /