下面就是“nodejs连接mysql数据库简单封装示例-mysql模块”的完整攻略:
一、安装和配置mysql模块
1.首先需要全局安装mysql模块,可以使用以下命令进行安装:
npm install mysql -g
2.在项目中导入mysql模块,示例如下:
const mysql = require('mysql');
二、连接数据库
在使用mysql模块之前,需要使用mysql.createConnection()方法创建一个数据库连接对象,并设置连接参数,如下:
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'testdb1'
});
三、封装常用方法
在实际应用中,为了简化代码并提高代码的可维护性,一般会封装一些常用方法。下面列举两个常用方法的示例:
1.查询数据
function query(sql, options, callback) {
connection.query(sql, options, (err, results) => {
if (err) {
console.error(err);
callback(err, null);
throw err;
}
callback(null, results);
});
}
以上代码中,query()方法接收3个参数:sql语句、参数选项和回调函数。其中,sql语句和参数选项用于执行查询操作,回调函数用于处理查询结果。如果查询过程中出现错误,则调用回调函数并将错误返回,否则将查询结果返回。
2.执行事务
async function transaction(sqlArr, optionsArr) {
// 启动事务
await beginTransaction();
let resultArr = [];
try {
for (let i = 0; i < sqlArr.length; i++) {
const sql = sqlArr[i];
const options = optionsArr[i];
const res = await queryAsync(sql, options);
resultArr.push(res);
}
// 提交事务
await commit();
return resultArr;
} catch (error) {
// 回滚事务
await rollback();
throw error;
}
}
以上代码中,transaction()方法接收两个参数:sql语句数组和参数选项数组。在方法内部,我们先启动事务,然后使用queryAsync()方法依次执行sql语句,最后根据执行结果提交或回滚事务。
四、完整示例说明
以下是一个完整的示例,用于说明如何在nodejs中连接mysql数据库,并执行查询操作和事务操作:
const mysql = require('mysql');
const util = require('util');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'testdb1'
});
// 将query转为promise形式
const queryAsync = util.promisify(connection.query).bind(connection);
// 查询数据
function query(sql, options, callback) {
connection.query(sql, options, (err, results) => {
if (err) {
console.error(err);
callback(err, null);
throw err;
}
callback(null, results);
});
}
// 开启事务
function beginTransaction() {
return queryAsync('START TRANSACTION');
}
// 提交事务
function commit() {
return queryAsync('COMMIT');
}
// 回滚事务
function rollback() {
return queryAsync('ROLLBACK');
}
async function transaction(sqlArr, optionsArr) {
// 启动事务
await beginTransaction();
let resultArr = [];
try {
for (let i = 0; i < sqlArr.length; i++) {
const sql = sqlArr[i];
const options = optionsArr[i];
const res = await queryAsync(sql, options);
resultArr.push(res);
}
// 提交事务
await commit();
return resultArr;
} catch (error) {
// 回滚事务
await rollback();
throw error;
}
}
// 查询例子
query('SELECT * FROM test_table WHERE name = ?', ['test'], (err, results) => {
if (err) {
console.error(err);
return;
}
console.log(results);
connection.end();
});
// 事务例子
transaction(['DELETE FROM test_table WHERE id = ?', 'UPDATE test_table SET value = ? WHERE id = ?'], [[1], [2, 'new value']])
.then(results => console.log(results))
.catch(error => console.error(error))
.finally(() => connection.end());
上面的代码中,我们首先创建了一个数据库连接对象,然后定义了三个方法:query()、beginTransaction()、commit()和rollback()。其中,query()方法用于执行查询操作,事务方法用于执行事务操作。
最后,我们使用query()方法查询test_table表中name为test的数据,并使用事务方法依次执行了删除id为1的行和更新id为2的行的value字段。
以上就是“nodejs连接mysql数据库简单封装示例-mysql模块”的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs连接mysql数据库简单封装示例-mysql模块 - Python技术站