美文网首页
koa mysql async

koa mysql async

作者: SlowGO | 来源:发表于2018-12-26 14:52 被阅读11次

    安装 mysql 模块:

    npm install --save mysql
    

    数据库工具 dbutil.js

    const mysql = require("mysql")
    
    const pool = mysql.createPool({
      host     :  '101.12.28.231',
      user     :  'root',
      password :  '123456',
      database :  'test'
    })
    
    let query = function( sql, values ) {
    
      return new Promise(( resolve, reject ) => {
        pool.getConnection(function(err, connection) {
          if (err) {
            resolve( err )
          } else {
            connection.query(sql, values, ( err, rows) => {
    
              if ( err ) {
                reject( err )
              } else {
                resolve( rows )
              }
              connection.release()
            })
          }
        })
      })
    
    }
    
    let createTable = function( sql ) {
      return query( sql, [] )
    }
    
    
    let findDataById = function( table,  id ) {
      let  _sql =  "SELECT * FROM ?? WHERE id = ? "
      return query( _sql, [ table, id ] )
    }
    
    
    let findDataByPage = function( table, keys, start, end ) {
      let  _sql =  "SELECT ?? FROM ??  LIMIT ? , ?"
      return query( _sql, [keys,  table,  start, end ] )
    }
    
    
    let insertData = function( table, values ) {
      let _sql = "INSERT INTO ?? SET ?"
      return query( _sql, [ table, values ] )
    }
    
    
    let updateData = function( table, values, id ) {
      let _sql = "UPDATE ?? SET ? WHERE id = ?"
      return query( _sql, [ table, values, id ] )
    }
    
    
    let deleteDataById = function( table, id ) {
      let _sql = "DELETE FROM ?? WHERE id = ?"
      return query( _sql, [ table, id ] )
    }
    
    
    let select = function( table, keys ) {
      let  _sql =  "SELECT ?? FROM ?? "
      return query( _sql, [ keys, table ] )
    }
    
    let count = function( table ) {
      let  _sql =  "SELECT COUNT(*) AS total_count FROM ?? "
      return query( _sql, [ table ] )
    }
    
    module.exports = {
      query,
      createTable,
      findDataById,
      findDataByPage,
      deleteDataById,
      insertData,
      updateData,
      select,
      count,
    }
    

    应用:

    const { query,findDataById } = require('./dbutil')
    
    ...
    
    router.get('/users', async (ctx, next) => {
        let dataList = await query( "SELECT * FROM user" )
        ctx.body = dataList;
    })
    
    router.get('/user', async (ctx, next) => {
      let id = ctx.query.id;
      console.log('id:',id);
        let user = await findDataById('user', id);
        ctx.body = user;
    })
    
    ...
    

    相关文章

      网友评论

          本文标题:koa mysql async

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