При неудачном запросе падает сервер на node.js
Если MySQL после запроса выдает null, сервер падает и его нужно перезапускать, почитал про try catch, но не понял где его применить в моем коде. Ошибка:
triggerUncaughtException(err, true /* fromPromise */);
^
[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "null".] {
code: 'ERR_UNHANDLED_REJECTION'
}
Вот кусок (запрос):
return new Promise((resolve, reject) => {
connection.connect((err) => {
if (err) {
reject(err);
} else {
console.log('Database connected');
connection.query(
'SELECT id_user FROM user WHERE login = ? and password = ?',
[
Login,
hashPassword(Password)
],
(err, results, fields) => {
if (err) {
reject(err);
} else if (results.length === 0) {
reject(err);
} else {
const generate_token = (length) => {
const a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".split("");
const b = [];
for (let i = 0; i < length; i += 1) {
let j = (Math.floor(Math.random() * (a.length - 1)));
b.push(a[j]);
}
return b.join('');
};
const token_user = generate_token(32);
const id_user = results[0].id_user;
console.log(token_user);
connection.query(
'UPDATE user SET token_user = ? WHERE id_user = ?',
[
token_user,
id_user
],
(err, results, fields) => {
if (err) {
reject(err);
} else {
resolve(token_user);
}
connection.end((err) => {
if (err) {
console.log(err);
} else {
console.log('Database closed');
}
});
}
)
}
});
}
});
})
}
Источник: Stack Overflow на русском