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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Node.js:mysql2.js的基本操作增删改查

文档:


https://www.npmjs.com/package/mysql2

https://www.npmjs.com/package/mysql

如果本地没有安装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();
})();


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
SQL JavaScript 关系型数据库
Node.js 连接 MySQL
10月更文挑战第9天
17 0
|
3月前
|
SQL JavaScript 前端开发
node.js使用Sequelize操作数据库
node.js使用Sequelize操作数据库
|
SQL JavaScript 关系型数据库
node.js控制mysql的查询语句
node.js控制mysql的查询语句
79 0
|
JavaScript 关系型数据库 MySQL
Node.js学习笔记----mysql模块
Node.js学习笔记----mysql模块
|
JavaScript 前端开发 关系型数据库
node.js操作MySQL数据库
node.js操作MySQL数据库
132 0
|
JavaScript 前端开发 关系型数据库
Node.js:mysql2.js的基本操作增删改查
Node.js:mysql2.js的基本操作增删改查
205 0
|
缓存 JavaScript 数据库
node.js 数据库基础知识
node.js 数据库基础知识
151 0
|
SQL JavaScript 关系型数据库
如何使用Node.js连接数据库
在前面的文章中我们有手把手使用docker创建数据库,这里就直接沿用之前创建的数据库 首先启动docker,把之前的mysql容器运行起来
370 0
如何使用Node.js连接数据库
|
SQL JavaScript 前端开发
Node.js操作MySQL数据库
《前端基础》
199 0
|
JavaScript NoSQL MongoDB
Node.js使用mongodb.js操作MongoDB数据库
Node.js使用mongodb.js操作MongoDB数据库