node.js中 mysql 增删改查操作及async,await处理实例分析

Node.js中MySQL增删改查操作及async/await处理实例分析

一、介绍

MySQL是目前使用最广泛的关系型数据库管理系统,而Node.js作为一种服务器端的运行环境,可以很好地与MySQL进行集成,实现对MySQL数据库的增删改查操作。

在Node.js中,我们可以使用MySQL官方提供的包——mysql来访问数据库,同时结合ES7中引入的async/await语法完成并发数据库操作的异步处理,提高程序的稳定性和效率。

二、安装和配置MySQL

在开始前,我们需要安装MySQL数据库,以下是安装MySQL的简单过程:

  1. 前往MySQL官网下载MySQL Community Server。
  2. 安装MySQL,并在过程中设置MySQL的账户名和密码。
  3. 安装完成后,启动MySQL服务。

启动完mysql之后,要用mysql命令进入到mysql环境,用以下命令创建一个数据库:

create database testdb;

三、安装mysql包

在Node.js中使用MySQL,需要安装相关的MySQL包——mysqlmysql2

在命令行中,使用以下命令来安装:

npm install mysql mysql2

四、连接MySQL数据库

在Node.js中连接MySQL数据库,可以使用mysql包中提供的createConnection方法,需要传入MySQL数据库的基本信息,比如用户名、密码、主机名、端口号和数据库名称等。

以下代码演示了如何连接MySQL数据库:

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  port: 3306,
  database: 'testdb'
});

connection.connect((err) => {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }
  console.log('connected as id ' + connection.threadId);
});

connection.end();

五、执行MySQL数据库操作

MySQL数据库的操作主要包括增删改查四种操作,使用mysql包提供的query方法可以执行任意一种操作。

1. 查询数据

以下代码演示了如何查询MySQL数据库中的数据:

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  port: 3306,
  database: 'testdb'
});

connection.connect();

const sql = 'SELECT * FROM user';

connection.query(sql, (error, results, fields) => {
  if (error) throw error;
  console.log('The result is:\n', results);
});

connection.end();

2. 插入数据

以下代码演示了如何向MySQL数据库中插入数据:

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  port: 3306,
  database: 'testdb'
});

connection.connect();

const sql = "INSERT INTO user(name, age, email) VALUES('Tom', 18, 'tom@163.com')";

connection.query(sql, (error, results, fields) => {
  if (error) throw error;
  console.log('The result is:\n', results);
});

connection.end();

3. 更新数据

以下代码演示了如何更新MySQL数据库中的数据:

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  port: 3306,
  database: 'testdb'
});

connection.connect();

const sql = "UPDATE user SET age=20 WHERE name='Tom'";

connection.query(sql, (error, results, fields) => {
  if (error) throw error;
  console.log('The result is:\n', results);
});

connection.end();

4. 删除数据

以下代码演示了如何从MySQL数据库中删除数据:

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  port: 3306,
  database: 'testdb'
});

connection.connect();

const sql = "DELETE FROM user WHERE name='Tom'";

connection.query(sql, (error, results, fields) => {
  if (error) throw error;
  console.log('The result is:\n', results);
});

connection.end();

六、async/await处理MySQL数据库操作

async/await是ES7中引入的新特性,可以很好地处理异步回调问题。在Node.js中,我们可以结合async/await语法来并发执行多个MySQL数据库操作,实现更加高效的数据处理。

以下是一个使用async/await处理MySQL数据库操作的示例:

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  port: 3306,
  database: 'testdb'
});

async function run() {
  let data1 = await getDataFromTable('user');
  console.log('The result of query is:\n', data1);

  let data2 = await insertDataIntoTable('user', {name: 'Tom', age: 18, email: 'tom@163.com'});
  console.log('The result of insert is:\n', data2);

  let data3 = await updateDataInTable('user', {age: 20}, {name: 'Tom'});
  console.log('The result of update is:\n', data3);

  let data4 = await deleteDataFromTable('user', {name: 'Tom'});
  console.log('The result of delete is:\n', data4);
}

function query(sql, values) {
  return new Promise((resolve, reject) => {
    connection.query(sql, values, (err, res) => {
      if (err) {
        reject(err);
        return;
      }
      resolve(res);
    });
  });
}

async function getDataFromTable(tableName) {
  const sql = `SELECT * FROM ${tableName}`;
  return await query(sql);
}

async function insertDataIntoTable(tableName, data) {
  const sql = `INSERT INTO ${tableName} SET ?`;
  return await query(sql, data);
}

async function updateDataInTable(tableName, newData, oldData) {
  const fields = [];
  const values = [];
  for(let key in newData) {
    fields.push(`${key} = ?`);
    values.push(newData[key]);
  }
  const whereFields = [];
  const whereValues = [];
  for(let key in oldData) {
    whereFields.push(`${key} = ?`);
    whereValues.push(oldData[key]);
  }
  const sql = `UPDATE ${tableName} SET ${fields.join(', ')} WHERE ${whereFields.join(' AND ')}`;
  return await query(sql, [...values, ...whereValues]);
}

async function deleteDataFromTable(tableName, data) {
  const fields = [];
  const values = [];
  for(let key in data) {
    fields.push(`${key} = ?`);
    values.push(data[key]);
  }
  const sql = `DELETE FROM ${tableName} WHERE ${fields.join(' AND ')}`;
  return await query(sql, values);
}

run().then(() => {
  connection.end();
}).catch((err) => {
  console.error(err.stack);
  connection.end();
});

在这个例子中,我们使用async function定义了4个异步方法用于查询、插入、更新和删除MySQL数据库中的数据。在这些方法中,我们完成了对connection.query方法的封装,以便在async/await中使用。

run方法中,我们使用await关键字来调用这些方法,并实现了并发执行多个MySQL数据库操作,简化了程序的代码逻辑和维护难度。

七、总结

以上是Node.js中MySQL增删改查操作以及async/await处理实例的完整攻略,MySQL是数据持久化的重要组成部分之一,这里介绍的方法是一种较为简便和直观的处理方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js中 mysql 增删改查操作及async,await处理实例分析 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 详解MySQL Shell 运行 SQL 的两种内置方法

    详解MySQL Shell 运行 SQL 的两种内置方法 MySQL Shell是MySQL官方的新一代命令行客户端,它支持运行SQL,并且提供了两种内置的方法来运行SQL。本文将详细介绍这两种方法以及它们的使用方式。 方法一:使用 sql() 函数 sql(sql_statement) sql() 函数可以接收一个 SQL 语句作为参数,并且会返回执行结果…

    database 2023年5月22日
    00
  • redis阻塞及解决方法

    目录 阻塞分析 客户端 磁盘 主从节点 切片集群 小结 解决方案 异步的子线程机制 分批读取 控制RBD大小 阻塞分析 客户端 复杂度高的增删改查操作1、集合全量查询和聚合操作2、bigkey 删除3、清空数据库 磁盘 1、AOF 日志同步写 主从节点 1、从库接收 RDB 文件后、清空数据库、加载 RDB 文件; 切片集群 向其他实例传输哈希槽信息,数据迁…

    Redis 2023年4月12日
    00
  • 数据仓库和在线事务处理 (OLTP) 的区别

    数据仓库和在线事务处理(OLTP)是两种不同的数据处理方式。OLTP用于日常业务的数据处理,它处理的是交易数据,例如:订单、库存、客户信息、账单等。OLTP处理这些数据的速度非常快,通常需要在几毫秒内对一条数据进行读/写操作。OLTP系统的主要特点是高并发性、实时性和事务性。 数据仓库则用于维护大量历史数据,主要用于数据分析和报告生成。数据仓库存储的数据通常…

    database 2023年3月27日
    00
  • Redis migrate数据迁移工具的使用教程

    Redis migrate数据迁移工具的使用教程 Redis migrate是一个数据迁移工具,其可以将Redis数据库中的数据迁移到其他的Redis实例或其他数据存储系统,包括MySQL、PostgreSQL、MongoDB、Cassandra等。本教程将会为读者详细讲解如何使用Redis migrate进行数据迁移。 安装Redis migrate 首先…

    database 2023年5月22日
    00
  • redis 缓存验证码 步骤

    1. 安装redis https://redis.io/download 根据官网的教程就行操作: $ wget http://download.redis.io/releases/redis-3.2.9.tar.gz $ tar xzf redis-3.2.9.tar.gz $ cd redis-3.2.9 $ make可能会遇到的问题是你的服务器上没有装…

    Redis 2023年4月11日
    00
  • 使用shell脚本每天对MySQL多个数据库自动备份的讲解

    下面是使用 shell 脚本每天对 MySQL 多个数据库自动备份的攻略。 1. 环境准备 在开始之前,我们需要确保以下条件已经具备:1. 服务器上安装了 MySQL 数据库;2. 已经编写好了备份脚本;3. 服务器上安装了 crontab 定时任务服务。 2. 编写备份脚本 备份脚本需要包含以下内容:1. 备份文件的保存路径;2. 备份引擎的选择;3. 备…

    database 2023年5月22日
    00
  • Db2数据库中常见的堵塞问题分析与处理方法

    Db2数据库中常见的堵塞问题分析与处理方法 什么是堵塞问题 在多用户环境下,当一个事务使用一些其他事务正在使用的资源时,该事务就会被阻塞,称为堵塞。堵塞是一种经常出现的问题,在Db2数据库中尤其常见。对于开发和管理员来说,堵塞问题的处理至关重要,因为长时间的堵塞会造成性能问题。 堵塞问题的原因 堵塞问题的原因往往是事务的锁争用。如果事务A需要使用某个资源,并…

    database 2023年5月21日
    00
  • MySQL获得当前日期时间函数示例详解

    MySQL获得当前日期时间函数示例详解 在MySQL中,我们可以使用多种函数获取当前日期和时间。 NOW() 函数 NOW() 函数返回当前的日期和时间。它的语法如下: NOW(); 例如: SELECT NOW(); 输出: 2022-07-06 17:54:50 CURRENT_TIMESTAMP 函数 CURRENT_TIMESTAMP 函数也可以返回…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部