【问题标题】:Better code for error handling in NodeJs and Express在 NodeJs 和 Express 中更好的错误处理代码
【发布时间】:2019-07-03 10:44:13
【问题描述】:

当用户想要更改他的密码时,我有这个发布请求的代码。由于所有的情况和下面的页面呈现出来的代码真的很难看。有没有更好的方法来构建它? (它工作正常,做我想做的事。)

// 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');
    });

我尝试只在不同的情况下设置文本并在底部呈现文本的一页,但这不起作用。

【问题讨论】:

  • codereview.stackexchange.com 可能是发布此内容的更好地方,因为您希望改进工作代码的结构。
  • 谢谢,不知道有这个。

标签: javascript node.js express


【解决方案1】:

您可以编写一个函数来呈现错误操作并在不同的地方调用它。对于错误消息,创建一个配置文件并在错误报告中定义它们,然后在需要的地方调用和使用。

var configError = require('./config');

function renderErrorPage () {
   response.render('pages/changePassword', {
     user: request.session.username,
     text: configError[0]
   });
}

file/config.js

exports.x = [
   'Neue Passwörter stimmen nicht überein!',
   'Altes Passwort stimmt nicht überein!',
   'Neues Passwort zu unsicher.'
]

并在 else 条件下渲染错误页面转换为:

else {
        // Render error page
       /*response.render('pages/changePassword', {
           user: request.session.username,
           text: 'Altes Passwort stimmt nicht überein!'
        });*/

        renderErrorPage();

   }

【讨论】:

    猜你喜欢
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 2016-08-18
    • 2020-01-06
    • 2015-02-15
    • 2020-09-29
    相关资源
    最近更新 更多