begin transaction in node js using pool query
module.exports = {
creatUser: (req) => {
return new Promise((resolve, reject) => {
pool.getConnection(function (err, connection) {
connection.beginTransaction(function (err) {
if (err) {
//Transaction Error (Rollback and release connection)
connection.rollback(function () {
connection.release();
});
return reject(err);
} else {
connection.query(
`insert into ?? (name, email) values (?,?)`,
[
"user",
req.name.trim(),
req.email.trim()
],
function (err, uResults) {
if (err) {
//Query Error (Rollback and release connection)
connection.rollback(function () {
connection.release();
});
return reject(err);
} else {
let values = [];
req.departmentId.forEach(function (result) {
let l = [uResults.insertId, result];
values.push(l);
});
console.log("vale", values);
connection.query(
`insert into u_dep (u_id, dep_id) values ?`,
[values],
function (err, results) {
if (err) {
connection.rollback(function () {
connection.release();
});
return reject(err);
} else {
connection.commit(function (err) {
if (err) {
connection.rollback(function () {
connection.release();
});
return reject(err);
} else {
connection.release();
return resolve(uResults);
}
});
}
}
);
}
}
);
}
});
});
});
},
};