美文网首页
koa2操作mysql

koa2操作mysql

作者: 熊爸天下_56c7 | 来源:发表于2020-11-06 09:55 被阅读0次

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;

相关文章

网友评论

      本文标题:koa2操作mysql

      本文链接:https://www.haomeiwen.com/subject/zmoqvktx.html