nodejs连接mysql数据库简单封装示例-mysql模块

下面就是“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技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • node.js处理前端提交的GET请求

    要讲解如何用 Node.js 处理前端提交的 GET 请求,需要以下步骤: 创建 Node.js 服务器 接收前端发来的 GET 请求 解析 GET 请求参数 处理请求并返回响应数据 下面我们详细讲解如何用 Node.js 实现以上步骤: 创建 Node.js 服务器 首先需要安装 Node.js,然后打开命令提示符或终端,进入你的项目目录并执行以下命令创建…

    node js 2023年6月8日
    00
  • JS前端接口请求参数混淆方案分享

    “JS前端接口请求参数混淆方案分享”是一种用来确保前端接口请求安全性的方法。它通过对请求参数进行加密、混淆等处理,防止数据被窃取或篡改。 下面是实现该方案的完整攻略: 1. 生成密钥 首先,需要选取一种可靠的加密算法来保证安全,比如AES算法等。然后生成一对公私钥对,用公钥来加密请求参数,私钥用来解密。 例如,在Node.js下可以使用crypto模块生成密…

    node js 2023年6月8日
    00
  • 详解node服务器中打开html文件的两种方法

    下面是详解”详解Node.js服务器中打开HTML文件的两种方法”的完整攻略。 一、前言 很多时候我们需要在Node.js服务器中打开HTML文件,然后呈现给用户。那么Node.js服务器中有哪些方式可以打开HTML文件呢?下面就来详细讲解一下相关的两种方法。 二、方法一:使用Node.js内置的Http模块 Node.js内置的Http模块提供了创建Web…

    node js 2023年6月8日
    00
  • npm发包实践使用gRPC教程

    npm发包实践使用gRPC教程 1. 简介 gRPC是谷歌开发的基于HTTP/2协议的开源RPC框架,支持多种语言,包括JavaScript、Node.js等。gRPC的特点是高效、轻量级、跨平台、多语言支持、自动代码生成等。本文将介绍如何在npm包中使用gRPC。 2. 安装和配置 2.1 安装gRPC npm install grpc 2.2 编写.pr…

    node js 2023年6月8日
    00
  • node.js中的fs.openSync方法使用说明

    node.js中的fs.openSync方法使用说明 fs.openSync() 方法用于使用文件路径字符串之前,获取对文件的访问。该方法通过一个文件路径字符串,与一组选项对象进行调用,返回一个整数(文件描述符),代表了一个通过该文件描述符可以进行操作的文件。 方法语法 fs.openSync(path[, flags[, mode]]) 方法参数 path…

    node js 2023年6月8日
    00
  • JavaScript库urlcat 之URL构建器库

    下面是关于 JavaScript 库 urlcat 之 URL 构建器库的完整攻略。 简介 urlcat 是一个 URL 构建器库,它可以帮助开发者更方便、更快速地构建 URL,支持多种常见的 URL 场景,比如拼接 URL、替换 URL 中的参数等。urlcat 库的 Github 仓库地址为 https://github.com/interledgerj…

    node js 2023年6月8日
    00
  • Node.js+ES6+dropload.js实现移动端下拉加载实例

    下面是关于“Node.js+ES6+dropload.js实现移动端下拉加载”的详细攻略: 1. 确定需求和使用工具 在开始实现前,我们需要先确定需求,此处需求是实现移动端下拉加载功能。在实现过程中,我们将使用 Node.js 作为后端平台,ES6 作为前端开发语言,并使用 dropload.js 插件帮助我们实现下拉加载功能。 2. 创建项目 创建项目并安…

    node js 2023年6月8日
    00
  • Node.js使用Express创建Web项目详细教程

    以下是关于如何使用Express创建Web项目的详细攻略: 什么是Express? Express是Node.js的一个开源网络应用程序框架,它可以帮助我们方便快捷地创建Web应用程序。 步骤1:安装Node.js和npm 在使用Express之前,我们需要先安装Node.js和npm。具体安装方法可以参考官方文档:https://nodejs.org/。 …

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部