Node.js:mysql2.js的基本操作增删改查

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Node.js:mysql2.js的基本操作增删改查

文档:

如果本地没有安装MySQL,可以使用免费的在线数据库替代

https://www.planetscale.com

表结构

create table table_user(
    id int primary key auto_increment, 
    name varchar(20) not null, 
    age int not null default 0
);

安装依赖

node -v
v16.14.0
pnpm i dotenv mysql2 

package.json

{
  "type": "module",
  "dependencies": {
    "dotenv": "^16.0.1",
    "mysql2": "^2.3.3"
  }
}

配置文件

.env

DATABASE_URL='mysql://root:123456@127.0.0.1/data'

代码实现

// pnpm i mysql2
import mysql from 'mysql2'
export function getConnection(config) {
  const connection = mysql.createConnection(config)
  // 自定义占位符
  // https://www.npmjs.com/package/mysql#custom-format
  connection.config.queryFormat = function (query, values) {
    if (!values) return query
    return query.replace(
      /\:(\w+)/g,
      function (txt, key) {
        if (values.hasOwnProperty(key)) {
          return this.escape(values[key])
        }
        return txt
      }.bind(this)
    )
  }
  // 查询列表
  function queryAsync(sql, params) {
    return new Promise((resovle, reject) => {
      connection.query(sql, params, function (err, result, fields) {
        if (err) {
          reject(err)
        } else {
          resovle(result)
        }
      })
    })
  }
  // 查询单个对象
  async function queryOneAsync(sql, params) {
    const res = await queryAsync(sql, params)
    if (res && res.length > 0) {
      return res[0]
    } else {
      return null
    }
  }
  // 同步查询
  connection.queryAsync = queryAsync
  connection.queryOneAsync = queryOneAsync
  return connection
}

查询示例

import "dotenv/config";
// 数据插入
async function insertRow(connection) {
  let sql = "INSERT into table_user (name, age) VALUES (:name, :age)";
  let params = { name: "Tom", age: 23 };
  let result = await connection.queryAsync(sql, params);
  console.log(result);
  //   ResultSetHeader {
  //     fieldCount: 0,
  //     affectedRows: 1,
  //     insertId: 1,
  //     info: '',
  //     serverStatus: 2,
  //     warningStatus: 0
  // }
}
// 数据修改
async function updateRow(connection) {
  let sql = "UPDATE table_user SET name = :name, age = :age WHERE id = :id";
  let params = { name: "Jack", age: 24, id: 1 };
  let result = await connection.queryAsync(sql, params);
  console.log(result);
  //   ResultSetHeader {
  //     fieldCount: 0,
  //     affectedRows: 1,
  //     insertId: 0,
  //     info: 'Rows matched: 1  Changed: 1  Warnings: 0',
  //     serverStatus: 2,
  //     warningStatus: 0,
  //     changedRows: 1
  //   }
}
// 数据查询
async function selectRow(connection) {
  let sql = "SELECT * FROM table_user WHERE id = :id";
  let params = { id: 1 };
  let result = await connection.queryAsync(sql, params);
  console.log(result);
  // [ { id: 1, name: 'Jack', age: 24 } ]
}
// 数据删除
async function deleteRow(connection) {
  let sql = "delete from table_user WHERE id = :id";
  let params = { id: 1 };
  let result = await connection.queryAsync(sql, params);
  console.log(result);
  // ResultSetHeader {
  //     fieldCount: 0,
  //     affectedRows: 1,
  //     insertId: 0,
  //     info: '',
  //     serverStatus: 2,
  //     warningStatus: 0
  //   }
}
(async () => {
  const connection = getConnection(process.env.DATABASE_URL);
  // await insertRow(connection);
  // await updateRow(connection);
  // await selectRow(connection);
  await deleteRow(connection);
  // 断开连接
  connection.end();
})();

promise

const mysql = require("mysql2/promise");
let config = {
  host: "127.0.0.1",
  port: 3306,
  user: "root",
  password: "123456",
  database: "data",
};
(async () => {
  const connection = await mysql.createConnection(config);
  let sql = "select * from tb_user";
  const [rows, fields] = await connection.query(sql);
  console.log(rows);
  await connection.end();
})();

输出

[
  {
    id: 1,
    name: '费阳',
    phone: '13777763170',
    profession: null,
    age: 27,
    status: 1,
    email: 'wyao@gmail.com'
  }
]

参考

Node.js 连接 MySQL-菜鸟教程

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
16天前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
11月前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
299 1
|
6月前
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
453 9
|
8月前
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
10月前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
448 12
|
11月前
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
228 20
|
10月前
|
存储 JavaScript NoSQL
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
151 9
|
11月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
11月前
|
开发框架 JavaScript 前端开发
Node.js日记:客户端和服务端介绍、Node.js介绍
Node.js日记:客户端和服务端介绍、Node.js介绍
|
11月前
|
JavaScript 前端开发 开发工具
Node.js——初识Node.js
Node.js——初识Node.js
143 4