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

yizhihongxing

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日

相关文章

  • Sql Server 应用程序的高级Sql注入第1/2页

    让我来详细讲解一下 “Sql Server 应用程序的高级Sql注入第1/2页” 的攻略。这篇文章主要涉及 SQL 注入攻击的高级技术,是一种比较危险的攻击方式,需要进行充分的防范。 以下是详细攻略: 第1页: 进行 SQL 注入攻击的基本步骤 这一部分内容主要介绍了进行 SQL 注入攻击的基本步骤,其中主要包括: 寻找 SQL 注入点 组合 SQL 语句 …

    database 2023年5月21日
    00
  • mysql事件的开启和调用

    MySQL 事件是一种定期执行的操作,可以定期自动执行特定的任务,比如清除过期的数据、备份数据库等等。下面是MySQL事件的开启和调用的完整攻略。 开启事件调度器 在MySQL命令行中执行以下语句,可以开启事件调度器: SET GLOBAL event_scheduler = ON; 也可以在MySQL配置文件中加入以下配置,实现持久化开启事件调度器: ev…

    database 2023年5月22日
    00
  • MySQL二进制日志(Binary Log)详解

    MySQL二进制日志(Binary Log)是MySQL数据库记录的一种日志,用于记录对数据库进行修改的所有操作,如数据的更新、插入、删除等,以及对数据库的结构操作,如表的创建、删除等。该日志以二进制的形式存储,是一种非常高效的记录方式。 二进制日志的作用 数据恢复:MySQL数据库在运行过程中可能会遇到一些故障,例如数据库崩溃、停电等,此时可能会丢失部分数…

    MySQL 2023年3月10日
    00
  • mysql删除重复记录语句的方法

    下面是详细的mysql删除重复记录语句方法攻略: 1. 查找重复记录 在删除重复记录之前,首先需要确定哪些记录是重复的,可以使用以下语句查找在指定列中有重复值的记录: SELECT col1, col2, COUNT(*) FROM table_name GROUP BY col1, col2 HAVING COUNT(*) > 1; 其中,col1和…

    database 2023年5月22日
    00
  • mysql 事务未提交导致死锁 Lock wait timeout exceeded; try restarting transaction 解决办法

    锁表问题提示:Lock wait timeout exceeded; try restarting transaction 解决锁表方法 查询数据库阻塞的进程SELECT * FROM information_schema.innodb_trx主要看箭头指向的这几个字段,如果有阻塞数据(不为0的就是阻塞的),找到后在根据下图这个字段:try_mysql_th…

    MySQL 2023年4月12日
    00
  • mysql中json_replace函数的使用?通过json_replace对json对象的值进行替换

    需求描述:   在看mysql中关于json的内容,通过json_replace函数可以实现对json值的替换,   在此记录下. 操作过程: 1.查看带有json数据类型的表 mysql> select * from tab_json; +—-+—————————————————…

    MySQL 2023年4月13日
    00
  • Java类加载器与双亲委派机制和线程上下文类加载器专项解读分析

    Java类加载器与双亲委派机制 Java中的类加载器用于将class文件加载到JVM中。Java中主要有三种类加载器:bootstrap class loader(启动类加载器)、extension class loader(扩展类加载器)和system class loader(系统类加载器)。其中扩展类加载器和系统类加载器统称为应用程序类加载器。 双亲委…

    database 2023年5月21日
    00
  • KYLIN下如何安装MySQL5.0

    安装MySQL5.0在KYLIN上可以通过以下步骤完成: 安装MySQL5.0 RPM包 在KYLIN的终端中输入以下命令来下载MySQL5.0的RPM包: wget http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm 然后使用以下命令来安装RPM包: sudo rpm -ivh…

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