一、先安装mysql中间件

npm i mysql --save

二、config.json配置库文件

{"host": "localhost","port": "3306","user": "root","password": "root","database": "xiaou"
}

三、封装mysql连接库

const mysql = require('mysql'); //导入mysql中间件
const to = require('../utils/async_to');
const fs = require('fs');
const path = require('path');class DB {constructor({host = 'localhost', //主机名或id地址port = '3306', //端口号user = 'root', //用户名password = 'root', //密码database = 'xiaou' //数据库名} = {}) {this.conn = null;this.config = {host,port,user,password,database};};//1.建立连接connect() {//创建服务器连接,将连接对象,赋值给connthis.conn = mysql.createConnection(this.config);return new Promise((resolve, reject) => {//建立连接this.conn.connect(err => {err ? reject(err) : resolve();});});};//2.对数据库的操作async query(sql, params = []) {//每次执行query都会创建一个新的连接let [err, data] = await to(this.connect());if (err) throw err; //如果发生错误将会抛出return new Promise((resolve, reject) => {this.conn.query(sql, params, (err, data) => {err ? reject(err) : resolve(data);});});};//3.关闭连接close() {this.conn.end();};
}// 读取配置文件信息
let buf = fs.readFileSync(path.join(__dirname, 'config.json'));//导出DB对象的实例
module.exports = new DB(JSON.parse(buf.toString()));

上面库需要搭配async_to使用

let to = (promise) => {return promise.then(data => [null, data]).catch(err => [err, null]);
};module.exports = to;

四、使用方法

因为封装的时候使用了async,所以使用的使用注意搭配async和await使用

const db = require('../db');
const to = require('../../utils/async_to');register();
//注册业务
let register = async(req, res) => {let result = await existUser(username);if (result.length > 0) {res.send(myError('该用户已经存在'));return;}}//判断用户是否存在
async function existUser(username) {//具体使用db.querylet [err, data] = await to(db.query("SELECT member.username FROM member WHERE username=?", username));return err ? err : data;
};

往期精彩文章

  • leetcode-js刷题记录&数据结构
  • docker下YApi部署教程-支持swagger数据导入
  • 带你深入理解什么叫js闭包
  • 使用Object.defineProperty进行数据劫持,实现响应式原理-剖析vue2.0
  • 前端性能优化之rel=“prefetch“预/懒加载功能
  • 前端唤起相机的方法H5+JS

nodejs对连接mysql数据库进行封装,使用库实现对数据库的增删查改操作相关推荐

  1. 【MySQL】数据库中表的增删查改操作详解

    文章目录 前言 SQL的通用语法 一.表的创建与表的新增 语法 数据类型的介绍 演示 二.表的删除 语法 删整张表的语法 删记录的语法 演示 三.表的查询 查询整张表 (一)全列查询 (二)指定列查询 ...

  2. 数据库mysql增删查改操作指令

    1.基础操作 MySQL服务器->许多数据库->许多数据表-> 指定表头,表头描述了列名和列类型-> 每行为一个记录,每列为一个字段 数据类型:tinyint(1字节),sma ...

  3. 浅谈IDEA中JBDC的简单增删查改操作及简单封装

    连接数据库 1.加载驱动 Class.forName("com.mysql.jdbc.Driver"); 本行代码主要作用是加载(注册)数据库驱动(到JVM) 2.创建链接 Con ...

  4. Mysql库及表的基本概念、增删查改操作以及表的约束、多表联查

    什么是数据库? 存储数据的仓库 数据库的存储介质:磁盘和内存. 为什么要用数据库不用文件?(数据库与文件进行数据存储的区别) 1.文件存储安全性低 2.数据库对数据进行良好的存储,查询以及管理 3.便 ...

  5. Java操作MongoDB数据库CRUD(增删查改)

    Java操作MongoDB数据库CRUD(增删查改) 借助mongo-java-driver包,对MongoDB数据库的集合(DataTable)及文档(BSON对象数据)进行增删查改操作.本文的核心 ...

  6. 【MySQL】增删查改CURD(基础版)

    目录 前言 一.新增 二.查询 1. 全列查找: 2. 指定列查询 3. 查询字段为表达式(一边查一边计算) 4. 查询:各列之间的计算 5. 起别名 6. 查询时进行去重: 7. 查询结果进行排序: ...

  7. MySQL - 对数据表进行“增删查改”的基础操作 - 细节狂魔

    文章目录 前文知识点回顾 正文 :对数据表进行"增删查改"操作 新增操作 - insert 关键字 查找语句(基础操作) - select关键字 - 重点!!!!!!!! 1.最基 ...

  8. MySQL表sql语句增删查改_学会这些操作你就不会栓Q(狗头)

    目录 本章目标 CRUD 新增(Create) 单行数据,全列插入 多行插入,指定列插入 查询(Retrieve) 修改(Update) 删除(Delete) 本章目标 学会MySQL表中的sql语句 ...

  9. 利用 MySQLi 将PHP连接到mysql数据库,并采用MySQLi以面向对象的方式对mysql进行增删查改(CRUD)

    包括 1.mysqli以面向对象的方式连接数据库 2.以面向对象的方式新增数据库 3.以面向对象的方式新增数据表 4.以面向对象的方式在数据表中增加记录 5.以面向对象的方式在数据表中查找记录 6.以 ...

最新文章

  1. 当Python遇上朱茵、迪丽热巴、林志玲、王祖贤等众多美女
  2. python导入模块快捷键_Python中的模块导入和读取键盘输入的方法
  3. Pycharm使用技巧(转载)
  4. python修改linux网卡信息,linux下修改网卡接口名称
  5. oracle表空间,角色,权限,表,索引,序列号,视图,同义词,约束条件,存储函数和过程,常用数据字典,基本数据字典信息,查看VGA信息,维护表空间,创建表空间等信息
  6. 0到1:闲鱼高复杂度高性能社区圈子开发实录
  7. java中j 和 j啥区别_从字节码层次分析++j和j++的区别
  8. 【react】 flux 的数据修改流程,类似与vuex那样,但是又有区别
  9. 移动端 H5图片裁剪插件,内置简单手势操作
  10. ValueStack中的context与ActionContext的区别
  11. 编译ffmpeg:libavdevice/xcbgrab.c:28:10: fatal error: xcb/xfixes.h: 没有那个文件或目录
  12. 计算机科学与技术的主要研究方向,计算机科学与技术学科方向与特色
  13. 我今天人品大爆发啊,赚了299美元
  14. 云杰恒指:9.3恒指期货早盘资讯
  15. mysql菜鸟教程 文档_mysql菜鸟教程
  16. HLS/m3u8之sample-aes解密及软件开发
  17. 【JSP课程设计】个人信息管理系统(代码保姆级)
  18. ‘字符型‘变量和‘字符串型‘变量
  19. PYNQ2裸跑之音频ADAU1761
  20. Mac如何安装MySQL和Navicat

热门文章

  1. 百度地图--3D棱柱效果---省边界数据抽取---Boundary、Point、Prism
  2. android is 32-bit instead of 64-bit调试
  3. 最简易的网络框架封装(新手可看)
  4. JAVA读取jtl文件不完整,【jmeter】用聚合报告打开“.jtl”文件,数据显示不完整(或是不对)...
  5. 关于博达CMS制作网站的心得与体会
  6. 2022-09-07:给你一个由正整数组成的数组 nums 。 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数。 例如,序列 [4,6,16] 的最大公约数是 2 。 数组的一个
  7. 计算机中的英语六级作文万能模板,大学英语六级作文万能模板「议论文」
  8. 2016大数据企业排行榜揭示中国数据发展
  9. 带你了解热门智能家居开源项目:智汀家庭云与Home Assistant之插件初步配置
  10. 《惢客创业日记》2018.11.27(周二)保健品和大力丸(下)