21xrx.com
2025-03-22 00:39:07 Saturday
文章检索 我的文章 写文章
Node.js MySQL数据库操作封装
2023-07-04 19:48:19 深夜i     10     0
Node js MySQL 数据库操作 封装

随着互联网、移动互联网等信息化技术的快速发展,数据库的应用越来越广泛,MySQL数据库是其中一种经典的关系型数据库,而Node.js则在JavaScript语言的基础上封装了一些新的api,使得其可以快捷地与MySQL数据库进行交互。为了提高代码的复用性和可维护性,我们可以将数据库操作封装为一个模块,提供给其他模块使用。

一、数据库连接

要进行数据库操作首先要进行数据库连接,一般在项目初始化时进行一次连接,然后在程序运行的过程中一直使用同一个连接。这里我们可以使用mysql2模块进行连接,具体代码如下:

const mysql = require('mysql2/promise');
const pool = mysql.createPool(
 host: 'localhost');
module.exports = pool;

上面的代码中,我们通过mysql2模块创建一个mysql连接池,然后导出该连接池,供其他模块使用。

二、查询语句封装

在进行数据库操作时,我们需要编写很多sql语句,为了使代码复用,我们可以将常用的数据库操作封装为一个函数,并在需要使用时调用。下面是一个简单的查询语句封装:

const pool = require('./mysql');
async function query(sql, params) {
 const conn = await pool.getConnection();
 try {
  const [rows] = await conn.query(sql, params);
  return rows;
 } catch(e) {
  console.error(e);
 } finally {
  conn.release();
 }
}
module.exports = query;

上面的代码中,我们通过调用mysql连接池的getConnection方法获取一个连接,然后调用该连接的query方法执行sql语句。在执行完sql语句之后,我们需要释放这个连接,以便其他模块可以重复利用该连接。

三、增删改语句封装

类似地,我们也可以将增删改等操作封装为一个函数,下面是一个简单的插入语句封装:

const pool = require('./mysql');
async function insert(sql, params) {
 const conn = await pool.getConnection();
 try {
  await conn.query(sql, params);
 } catch(e) {
  console.error(e);
 } finally {
  conn.release();
 }
}
module.exports = insert;

四、可重用的业务逻辑封装

在实际项目中,我们有些业务逻辑可能会被多个模块共用,为了避免代码的重复,我们也可以将这些业务逻辑封装起来。下面是一个简单的按id查询商品的逻辑封装:

const query = require('./query');
async function findById(id) {
 const sql = `SELECT * FROM product WHERE id = ?`;
 const rows = await query(sql, [id]);
 return rows[0];
}
module.exports = findById;

上面的代码中,我们调用了之前封装的query函数进行查询,并返回查询结果中的第一行。

总结

本文介绍了Node.js与MySQL数据库交互的基本操作,并封装了几个常用的数据库操作函数,以及业务逻辑封装。MySQL是一种非常优秀的关系型数据库,而Node.js可以很好地与其进行交互,通过将数据库操作封装为模块,可以极大地提高代码的可复用性和可维护性。

  
  

评论区