• 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);
    

    .

  • 相关阅读:
    《需求工程-软件建模与分析之读书笔记之五》
    Neo4j (3.3.9)的学习之路(1)
    大数据培训第一天总结
    京东B2B业务架构演变阅读心得
    小米网抢购系统开发实践阅读心得
    余额宝技术架构及演进阅读心得
    美图数据统计分析平台架构演进阅读心得
    荔枝架构实践与演进历程阅读心得
    去哪儿网支付系统架构演进全历程阅读心得
    基于SOA质量属性的系统构架分析与实践
  • 原文地址:https://www.cnblogs.com/crazycode2/p/11374509.html
Copyright © 2020-2023  润新知