这是我的示例代码
// database.js
exports.connection = mysql2.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USERNAME,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
supportBigNumbers: true,
bigNumberStrings: true,
dateStrings: true,
});
// users.js
const { connection } = require('./database.js');
async function createUsers(params) {
const conn = await connection.getConnection();
try {
await conn.beginTransaction();
const sql = "INSERT INTO users (name,pass) VALUES (?,?)";
const [id] = await conn.query(sql, [params.user, params.pass]);
// i want to passing connection to any function like this
await loginRoles(conn, { id: id.insertId, role: "user" });
await conn.commit();
return id.insertId;
} catch (error) {
await conn.rollback();
return Promise.reject(error);
} finally {
conn.release();
}
}
async function loginRoles(conn, params) {
try {
const sql = "INSERT INTO login (id, role) VALUES (?,?)";
return conn.query(sql, [params.id, params.role]);
} catch (error) {
return Promise.reject(error);
}
}
将连接作为参数传递给不同的函数是正确的吗?我已经测试了这个代码,它是有效的。但这是正确的方式吗?
connection
只是一个对象,它存储了一些与数据库交互的方法,所以可以将这个对象传递给一些函数。您应该记住一件事:尽量不要在调用的函数中修改这个对象。它可能导致内存泄漏。