holyya.com
2025-09-04 08:41:31 Thursday
登录
文章检索 我的文章 写文章
Node.js MySQL数据库操作封装
2023-07-04 19:48:19 深夜i     --     --
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可以很好地与其进行交互,通过将数据库操作封装为模块,可以极大地提高代码的可复用性和可维护性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复