let mysql = require('mysql')
let fs = require('fs')
let path = require('path')
let to = require('../util/await-to');
const { resolve } = require('path');
class Db{
constructor(option){
// config是配置对象
this.config = option;
// conn是连接对象
this.conn = null;
// this.initConnection(option)
}
// 初始化连接
initConnection(option){
let conn = mysql.createConnection(option)
let p = new Promise((resolve,reject)=>{
conn.connect(err=>{
if(err){
reject(err)
}
else{
resolve(conn)
}
})
})
return p
}
async query(sql,params=[]){
let [err,conn] = await to(this.initConnection(this.config))
if(err) throw err
else{
this.conn = conn;
let p = new Promise((resolve,reject)=>{
conn.query(sql,params,(err,rows)=>{
if(err){
reject(err)
}
else{
resolve(rows)
}
// 关闭连接
this.close()
})
})
return p
}
}
close(){ //关闭连接
this.conn ? this.conn.end() : ''
}
}
let configBuf = fs.readFileSync(path.join(__dirname,'config.json'))
let config = JSON.parse(configBuf)
let db = new Db(config)
module.exports = db;
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
to方法:
function to(p){
return p.then(val=>{
return [null,val]
}).catch(err=>{
return [err]
})
}
config为json文件其中存放连接的必要信息,格式如下
{
"host" : "127.0.0.1",
"port" : "3306",
"user" : "root",
"password" : "root",
"database" : "xxxxxx"
}