https://blog.csdn.net/weixin_34378969/article/details/91436028
一. 引入MySQL模块
npm install mysql --save
提前创建一些文件,用来存放操作程序

二. 创建 mysql配置文件
mysql_config.js文件用来存放数据库连接配置
const mysqlConfig = {
user: "root",
password: "xxxxxxxxxxxxx",
database: "db1",
host: "127.0.0.1",
port: 3306,
timezone: '08:00'
};
module.exports = mysqlConfig;
三. 封装异步query函数
const mysql = require("mysql");
const MYSQL_CONFIG = require("./mysql_config");
const pool = mysql.createPool(MYSQL_CONFIG);
const query = (sql, val) => {
return new Promise((resolve, reject) => {
pool.getConnection(function (err, connection) {
if (err) reject(err);
else {
connection.query(sql, val, (err, fields) => {
if (err) reject(err);
else resolve(fields);
connection.release();
});
}
});
});
};
module.exports = { query };
四. 封装一些sql语句
以下是一些封装语句, 将来需要新的SQL语句, 我们可以直接在这个文件中添加, 并暴露出去, 这样我们做到了对SQL语句的统一管理
/************************数据库操作相关************************
* 数据库操作相关 DDL
*************************************************************/
//(1) 创建数据库
const CREATE_DB = (dbName) => `CREATE DATABASE IF NOT EXISTS ${dbName};`;
//(2) 查询所有数据库
const SHOW_ALL_DB = `SHOW DATABASES`;
//(3) 删除数据库
const DELETE_DB = (dbName) => `DROP DATABASE IF EXISTS ${dbName};`;
//(4) 查询正在使用的数据库
const SELECT_DATABASE = `SELECT DATABASE()`;
//(5) 使用数据库
const USE_DB = (dbName) => `USE ${dbName};`;
/************************数据表操作相关************************
* 数据表操作相关 DDL
*************************************************************/
//(1) 查询所有数据表
const SHOW_ALL_TABLE = `SHOW TABLES`;
//(2) 添加数据表
const CREATE_TABLE = (tableName) =>
`CREATE TABLE IF NOT EXISTS ${tableName} (id int NOT NULL primary key AUTO_INCREMENT comment 'primary key',created_time TIMESTAMP COMMENT 'created time',updated_time TIMESTAMP COMMENT 'updated time')`;
//(3) 删除表
const DROP_TABLE = (tableName) => `DROP TABLE IF EXISTS ${tableName};`;
//(4) 添加字段
var ADD_COLUM = (tableName, column_name, column_type) =>
`ALTER TABLE ${tableName} ADD ${column_name} ${column_type};`;
//(5) 删除字段
var DROP_COLUM = (tableName, column_name) =>
`ALTER TABLE ${tableName} DROP ${column_name};`;
/************************数据操作相关************************
* 数据操作相关 DML
*************************************************************/
//(1) 查询表中所有数据
var QUERY_DATAS = (tableName) => `SELECT * FROM ${tableName}`;
//(2) 插入数据(全部列)
var INSERT_DATAS = (tableName, values) =>
`INSERT INTO ${tableName} VALUES (${values});`;
//(3) 插入数据(部分列)
var INSERT_DATA = (tableName, colums, values) =>
`INSERT INTO ${tableName}(${colums}) VALUES (${values});`;
//(4) 删除数据(根据id)
var DELETE_DATA_BY_ID = (tableName, id) =>
`DELETE FROM ${tableName} WHERE (id = ${id});`;
//(5) 删除所有数据
var DELETE_DATAS = (tableName) => `DELETE FROM ${tableName};`;
//(6) 更新数据条目
var UPDATE_DATA = (tableName, id, colum, value) =>
`UPDATE ${tableName} SET ${colum} = ${value} WHERE id = ${id};`;
/************************查询操作相关************************
* 数据查询相关 DQL
*************************************************************/
//(1)
/************************约束/外键/字符集相关************************
* 约束/外键/字符集相关
*************************************************************/
//(1)
/************************视图/索引相关************************
* 视图/索引相关
*************************************************************/
//(1)
/************************事务相关************************
* 事务相关
*************************************************************/
//(1)
module.exports = {
//数据库操作相关 DDL
CREATE_DB,
SHOW_ALL_DB,
DELETE_DB,
SELECT_DATABASE,
USE_DB,
//数据表操作相关 DDL
SHOW_ALL_TABLE,
CREATE_TABLE,
DROP_TABLE,
ADD_COLUM,
DROP_COLUM,
//数据操作相关 DML
QUERY_DATAS,
INSERT_DATAS,
INSERT_DATA,
DELETE_DATA_BY_ID,
DELETE_DATAS,
UPDATE_DATA,
};
五. 如何使用?
比如: 在 router/index.js中, 用户发起 localhost:3000/
的get请求时,返回所有数据库清单
关于SQL语句, 我们按需导入即可
const router = require("koa-router")();
const query = require("../mysql/query"); //引入异步查询方法
const { SHOW_ALL_DB } = require("../mysql/sql"); //部分引入sql库
router.get("/", async (ctx, next) => {
let query_res = await query(SHOW_ALL_DB);//异步方法调用
ctx.body = query_res;
});
module.exports = router;
网友评论