Node.js, mysql и транзакция с util (async / await) - PullRequest
0 голосов
/ 08 октября 2018

Как я могу использовать транзакцию с node.js, mysql, util?Мое соединение создается с помощью

    var mysql = require("mysql");
    var util = require("util");
    var connection = mysql.createPool({
        connectionLimit: 10000,
        acquireTimeout: 10000,
        host: process.env.HOST,
        user: process.env.AUSER,
        password: process.env.PASSWORD,
        database: process.env.DATABASE,
        dateStrings: true
    });
    connection.query = util.promisify(connection.query);
    module.exports = connection;

И вот пример запроса:

addNewEvent: async function(req, res) {
  try{
    let strSql = "SELECT * FROM users"
    const user = await connection.query(strSql);

    //now I need insert something in other table but I have to use transaction
  }
  catch (error) {
    console.log(error);
  }
})

Если я добавлю этот код const conn = await connection.beginTransaction(); после try{ Я получаю ошибку:

TypeError: connection.beginTransaction is not a function

1 Ответ

0 голосов
/ 08 октября 2018

Пулы не совпадают с подключениями.Вы должны получить соединение из пула соединений.

const connection = await util.promisify(pool.getConnection)();
await util.promisify(connection.beginTransaction)();
const user = util.promisify(connection.query)(strSql);

Вместо того, чтобы обещать все самостоятельно, вы также можете использовать одну из нескольких доступных библиотек, таких как mysql-promise, которые являются небольшими оболочками для mysqlбиблиотека, в которой уже есть обещанные методы.

...