[英]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.我尝试只在不同情况下设置文本并在底部渲染一页文本,但这不起作用。
You can write a function to render error operations and call it in different places.您可以编写一个函数来呈现错误操作并在不同的地方调用它。 For error messages, create a config file and define them in a bug report and call and use wherever it was needed.对于错误消息,创建一个配置文件并在错误报告中定义它们,然后在需要的地方调用和使用。
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.'
]
and render error page in else condition convert to :并在 else 条件下呈现错误页面转换为:
else {
// Render error page
/*response.render('pages/changePassword', {
user: request.session.username,
text: 'Altes Passwort stimmt nicht überein!'
});*/
renderErrorPage();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.