Есть код:
exports.prepareTransaction = () => {
return new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
if (err) throw err;
const beginTransaction = promisify(connection.beginTransaction).bind(connection);
const query = promisify(connection.query).bind(connection);
const commit = promisify(connection.commit).bind(connection);
const rollback = promisify(connection.rollback).bind(connection);
resolve({beginTransaction, query, commit, rollback});
});
});
};
Работаю с ним так:
let transaction = await connection.prepareTransaction();
try {
await transaction.beginTransaction();
...
await transaction.commit();
}
Мне нужно, чтобы при вызове transaction.commit(), после его выполнения у меня выполнялся connection.release() внутри моего промиса, то есть я должен как-то передать контекст connection в свой промис. Должно получится что-то вроде:
const commit = promisify(connection.commit( () => connection.release() )).bind(connection);
Только это не работает. Как это сделать правильно?