# 封装同步方法

# dbconnect.js

const mysql = require('mysql')

// 创建数据池
const pool  = mysql.createPool({
  host     : '127.0.0.1',   // 数据库地址
  user     : 'root',    // 数据库用户
  password : '123456',   // 数据库密码
  database : 'mysql'  // 选中数据库
})

// 在数据池中进行会话操作
function query( sql, values ) {
    // 返回一个 Promise
    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

# 使用

# 函数外部使用,需要使用.then处理promise

var sql="insert into auth(username,ipaddress,password)value(?,?,?)"
var params=['zhang666','127.9.9.9','123123123123123123']
query(sql,params).then(data=>{
    console.log(data);
    /*
    OkPacket {
        fieldCount: 0,
        affectedRows: 1,
        insertId: 7,
        serverStatus: 2,
        warningCount: 0,
        message: '',
        protocol41: true,
        changedRows: 0
    }
    */
    或者
    /*
    [{'username':'zhangsan','age':12,.....},{},......]
    */
})

# 函数内部使用

app.get('/', async (req, res)=>{
    var sql="select * from mysql.user"
    var params=[]
    var data=await query(sql,params)  //在其他函数中使用,可以直接获取数据,express举例
    ......
})