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数据库中日期中包含零值的问题

    首先我们需要明确MySQL中日期类型有哪些,常用的包括DATE、DATETIME、TIMESTAMP和YEAR。这些类型的区别主要在于精度和范围,以及对于时区的处理。 我们先看一下包含零值的情况,比如“0000-00-00”这个日期,它即不是一个有效的日历日期,也不是一个NULL值。这种情况下,我们需要考虑到MySQL的严格模式以及对于该日期的处理方式。下面…

    database 2023年5月22日
    00
  • mysql数据库中getshell的方式总结

    Mysql数据库中Getshell的方式总结 Mysql数据库是一个广泛使用的关系型数据库,并且在网络应用中常常作为后台数据库使用。然而,由于许多开发人员和管理员对其配置和安全性缺乏足够的了解,导致其更容易受到黑客的攻击。本文将总结一些在Mysql数据库中可用于Getshell的方式,并提供示例说明。 1. MYSQL UDF Getshell UDF(Us…

    database 2023年5月22日
    00
  • mysql替换表中的字符串的sql语句

    要替换MySQL表中的字符串,可以使用UPDATE语句,结合REPLACE函数实现。下面是完整的攻略: 使用SELECT语句来验证要替换的字符串是否存在。 首先,需要使用SELECT语句来验证数据库中要替换的字符串是否存在。语法如下: SELECT * FROM table_name WHERE column_name LIKE ‘%search_strin…

    database 2023年5月22日
    00
  • 在Spring中用select last_insert_id()时遇到问题

    下面是“在Spring中用select last_insert_id()时遇到问题”的完整攻略: 问题描述 在使用Spring的ORM框架进行数据操作时,为了获取最后插入的自增ID(例如MySQL中的AUTO_INCREMENT类型),通常需要使用SELECT LAST_INSERT_ID()查询。但是在实际使用中,我们可能会遇到各种问题,例如返回值不正确、…

    database 2023年5月19日
    00
  • 理解MySQL变量和条件

    当我们使用MySQL时,变量和条件这两个概念是非常重要的。本文将详细讲解如何理解MySQL变量和条件,包含以下内容: MySQL变量的定义和使用 MySQL条件的概念和语法 两条MySQL变量和条件的示例说明 MySQL变量的定义和使用 MySQL变量是一个用于存储值的命名容器。你可以在程序中创建变量,给它赋一个值,然后在接下来的程序中使用这个值。 在MyS…

    database 2023年5月18日
    00
  • linux系统oracle数据库出现ora12505问题的解决方法

    详细讲解“Linux系统Oracle数据库出现ORA-12505问题的解决方法”的完整攻略,包括以下几个步骤: 1. 确认错误信息 在解决ORA-12505问题之前,首先需要确认错误信息。ORA-12505是一种表示TNS Listener不能接受客户端请求的错误。通常,错误信息会包含类似以下内容: ORA-12505: TNS:listener does …

    database 2023年5月22日
    00
  • Hikari 数据库连接池内部源码实现的小细节

    下面是 Hikari 数据库连接池内部源码实现的小细节的详细讲解攻略。 1. Hikari 连接池基本原理 HikariCP 是一个高性能的 Java 数据库连接池,其基本原理是通过维护一个数据源连接池来支持更快速的创建和关闭连接,并防止连接泄漏。HikariCP 内部通过一个 ConcurrentHashMap 来保存连接,并通过一些算法(如 LIFO、F…

    database 2023年5月22日
    00
  • PHP使用PDO抽象层获取查询结果的方法示例

    下面是关于“PHP使用PDO抽象层获取查询结果的方法示例”的完整攻略,包括两条示例说明。 PDO抽象层介绍 PDO(PHP Data Objects)是一种PHP操作数据库的抽象层,使得PHP程序能够标准化地访问多种关系型数据库(如MySQL、SQLite、Oracle等),并提供了一组统一的API,方便程序员进行数据库操作。 PDO抽象层提供的主要类有: …

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