Обработка ошибок и потеря соединения в node.js mysql с использованием пула - PullRequest
0 голосов
/ 08 мая 2018

Я использую модуль node.js npm mysql для соединения с базой данных MySQL.

Я вижу, что есть возможность использовать:

  • либо pool.getConnection (), connection.query () и connection.release ()
  • или pool.query

У меня есть два вопроса относительно второго сценария.

1) Есть ли автоматическое переподключение в случае ошибки, потеря соединения при использовании pool.query? (нужна ли функция «отключение ручки» при использовании пула?

2) Используя первый подход, я могу установить connection.on ('error', function () {...}). Как это сделать во втором случае? (pool.on ('error' ...)?)

1 Ответ

0 голосов
/ 29 сентября 2018

1) Поправьте меня, если я ошибаюсь, но я не думаю, что есть метод автоматического подключения при отключении при использовании запроса пула. Это хороший дизайн кода, позволяющий нам узнать об ошибке и решить, что делать при отключении.

2) Мы можем использовать pool.getConnection((err, con) => {})

Вот код, который я использую для проверки соединения перед выполнением запроса. Надеюсь, это поможет.

connect: function ()
    {
        return new Promise((resolve, reject) => {
            let pool = Mysql.createPool({
                connectionLimit: config.mysql.connectionLimit,
                host: config.mysql.host,
                user: config.mysql.user,
                password: config.mysql.password,
                database: config.mysql.database
            });

            pool.getConnection((err, con) =>
            {
                try
                {
                    if (con)
                    {
                        con.release();
                        resolve({"status":"success", "data":"MySQL connected.", "con":pool});
                    }
                }
                catch (err)
                {
                    reject({"status":"failed", "error":`MySQL error. ${err}`});
                }
                resolve({"status":"failed", "error":"Error connecting to MySQL."});
            });
        });
    }
...