如何将事务与 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);
}
})
如果我在 try{
之后添加此代码 const conn = await connection.beginTransaction();
我会收到错误消息:
TypeError: connection.beginTransaction is not a function
最佳答案
池与连接不同。您必须从连接池中获取连接。
const connection = await util.promisify(pool.getConnection)();
await util.promisify(connection.beginTransaction)();
const user = util.promisify(connection.query)(strSql);
与其自己 promise 所有内容,您还可以使用一些可用的库之一,例如 mysql-promise
,它们是 mysql
库的小包装器,已经具有 promise 的方法。
关于Node.js、mysql 和事务与 util(async/await),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52702992/