zoukankan      html  css  js  c++  java
  • koa 项目中引入 mysql

    由于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);
    

    .

  • 相关阅读:
    Java秒杀实战 (三)秒杀基本功能开发
    Java优化高性能高并发+高并发程序设计视频教程
    Java远程通讯可选技术及原理
    SCRUM MASTER检查单
    每日站会
    “完成”的定义
    Sprint
    敏捷估算
    VerbalExpressions ——另类正则表达式
    几篇关于VisualStudio的调试工具文章
  • 原文地址:https://www.cnblogs.com/crazycode2/p/11374509.html
Copyright © 2011-2022 走看看