При неудачном запросе падает сервер на node.js

Рейтинг: 0Ответов: 0Опубликовано: 02.06.2023

Если 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');
                                      }
                                  });
                              }
                          )
                      }
                  });
          }
      });
  })
}

Ответы

Ответов пока нет.