900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > nodejs对连接mysql数据库进行封装 使用库实现对数据库的增删查改操作

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

时间:2020-10-29 14:45:45

相关推荐

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

一、先安装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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。