由于mysql模块的操作都是异步操作,每次操作的结果都是在回调函数中执行,现在有了async/await,就可以用同步的写法去操作数据库

Promise封装mysql模块

Promise封装 ./async-db.js

const mysql = require('mysql')

const pool = mysql.createPool({

host : '127.0.0.1',

user : 'root',

password : '123456',

database : 'my_database'

})

//将数据库的异步操作,封装在一个Promise中

let query = function( sql, values ) {

return new Promise(( resolve, reject ) => {

pool.getConnection(function(err, connection) {

if (err) {

reject( err )

} else {

connection.query(sql, values, ( err, rows) => {

if ( err ) {

reject( err )

} else {

resolve( rows )

}

connection.release()

})

}

})

})

}

module.exports = { query }

async/await使用Promise封装的mysql,开发自己的中间件./getdata.js

const { query } = require('./async-db');

//引用封装的mysql模块,来开发获取数据的中间件:

function getData(){

return async (ctx, next) => {

let sql = 'SELECT * FROM my_table';

// await等待query查询数据库,Promise异步操作完成后,通过resolve()返回查询到的数据列表

let dataList = await query( sql );

if(dataList[0]){ //数据不为空

//返回响应状态吗和响应信息

ctx.status = 200;

ctx.body = {code: 1, msg: 'query database success'}

}else{

ctx.status = 200;

ctx.body = {code: 0, msg: 'query database error'}

}

}

}

module.exports = { getData, }

Koa应用中使用中间件

const Koa = require('koa');

const router = require('koa-router')();

const bodyParser = require('koa-bodyparser');

const {getData} = require('./getdata');

const app = new Koa();

app.use(bodyParser()); //启用koa-bodyparser,需要它来获取post数据

router.get('/login', getData());

app.use(router.routs);

app.use(router.allowedMethods());

app.listen(2000);

.

koa mysql模块_koa 项目中引入 mysql相关推荐

  1. Java项目中引入MySQL依赖

    问题描述:原项目是PG数据库,现在需要改成mysql数据库. 1.添加相关依赖 <!-- 增加相关依赖包 --><!-- Postgresql驱动包 --><!-- &l ...

  2. MySQL数据库(安装配置 语句语法使用 项目中操作MySQL)

    文章目录: 一:安装配置 1.安装MySQL 2.卸载MySQL 3.汉化MySQL 4.启动和停止MySQL 5.修改MySQL密码 6.连接MySQL 二:语句语法使用 1.语句使用:增删改查 增 ...

  3. 数据库与身份认证(数据库的基本概念,安装并配置 MySQL,MySQL 的基本使用,在项目中操作 MySQL,前后端的身份认证)

    theme: channing-cyan 数据库与身份认证 1. 数据库的基本概念 1.1 什么是数据库 数据库(database)是用来组织.存储和管理数据的仓库. 当今世界是一个充满着数据的互联网 ...

  4. mysql连接规定时区以及编码_springboot项目中使用mysql连接遇到时区timezone问题,和编码encoding问题解决...

    springboot项目中使用mysql连接遇到时区timezone问题,和编码encoding问题解决 问题原因 1.application.properties的设置 1.1spring.data ...

  5. mysql ef_在EF中使用MySQL的方法及常见问题

    有时需要在网上租用空间或数据库,Mysql成本低一些,所以想将sql server转成mysql-- 注意:在安装Mysql时要选择文字集为utf8,否则将不能使用中文(当前也可以在创建数据库时使用u ...

  6. django使用mysql原始语句,Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件 mysql数据库,版本5. ...

  7. django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件 mysql数据库,版本5. ...

  8. ReactNative 在丁香医生项目中引入的踩坑日记

    ReactNative 在丁香医生项目中引入的踩坑日记 this没绑定到函数导致空指针 参考 React-Native 踩坑第二弹-undefined is not a function(evalua ...

  9. React项目中引入图片

    React项目中引入图片 一.场景描述 二.import 三.require 一.场景描述 当我们在react项目中使用img标签时,活着style中使用背景图片时,直接使用相对路径会无法引入图片. ...

最新文章

  1. NoSQL实现(3)——Cassandra
  2. Vue + SpringBoot跨域
  3. 四大组件---Activity
  4. 技术人不会学习,35 岁必然要焦虑!
  5. Golang 变量申明方式
  6. JavaScript实现模糊推荐的input框(类似百度搜索框)
  7. 在linux系统中查看mysql版本_Linux系统下查看mysql版本的四种方法_MySQL
  8. 什么是 Rax,以及 Rax 的特点
  9. 像韩寒一样活着 南方人物周刊(转)
  10. 六大行业动向,给2021年新能源汽车行业画下句点
  11. 济南公积金 销户 提取
  12. 使用腾讯云服务器搭建离线(中转)网盘
  13. 复变函数不挂科——3小时学完复变函数与积分变换(猴博士复变函数学习笔记2)
  14. 《高效能人士的7个习惯》-知彼解己
  15. 上“天”入“地”,都少不了亚马逊云科技这个云引擎
  16. Be accepted for inclusion in the IEEE INFOCOM 2018 technical program
  17. 解决《空中英语教室》Super MP3光盘繁体字乱码的方法
  18. 如何利用软文让你的产品广告上百度首页
  19. Selenium系列教程 - 文件上传
  20. CE实战:植物大战僵尸修改阳光并制作辅助(小试牛刀)

热门文章

  1. AbstractFactory抽象工厂模式
  2. 我是LinkedIn的SRE,我把LinkedIn搞挂了
  3. HTML iframe 和 frameset 的区别
  4. Linux命令:模拟电信联通双网络智能解析域名
  5. SCCM2012R2之五创建系统集合
  6. ghost一键还原如何使用
  7. RAC 安装patch 后启动实例 报错 ORA-00439 feature not enabled- Real Application Clusters 解决方法...
  8. 站长之家html视频播放,HTML5视频发展状况
  9. c语言dll注入,教大家写一个远程线程的DLL注入,其实还是蛮简单的……………………...
  10. 华为存储iscsi配置_iscsi 华为存储配置 上课内容