沃梦达 / 编程技术 / 数据库 / 正文

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

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

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处理实例分析

基础教程推荐