由于用不惯node的中间件mysql的增删改查的写法,特别是事务,特基于它做了一个封装,用着就方便多了,而且事务的写法也很简单,就是用同步的写法。大家有兴趣的可以安装体验一下。
传送门
https://npm.taobao.org/package/qc-mysql
安装mysql中间件
npm install --save mysql
安装封装中间件qc-mysql
npm install --save qc-mysql
使用
const mysql = require('qc-mysql')
/*
第二个参数表示当前数据库的表前缀,它是可选的(默认: '')
*/
let Db = new mysql({
host : '127.0.0.1', // mysql链接服务器地址
database : 'database', // 数据库名
user : 'root', // 用户名
password : 'root', // 密码
port : 3306, // 端口
connectionLimit : 10 // 创建的连接数量
},'fix_')
async function select() {
let data = {
'field' : 'id,title',
'order' : 'id desc'
}
// let results = await Db.find('table Name', data) // 返回1条记录
let results = await Db.select('table Name', data) // 返回多条记录
return results
}
console.log(select())
上面的 data参数详解
// Explained ①
//JOIN 用法
let data = {
'field' : 'c.id,c.name,k.title',
'limit' : 10,
'alias' : 'c',
'join' : [
['kinder k', 'c.yid=k.id'] // Default: INNER JOIN
//....
]
}
await Db.select('childs', data)
// console.log(Db.sql) // SELECT c.id,c.name,k.title FROM fix_childs AS c INNER JOIN fix_kinder k ON c.yid=k.id LIMIT 10
data = {
'field' : 'c.id,c.name,k.title',
'limit' : 10,
'alias' : 'c',
'join' : [
['kinder k', 'c.yid=k.id', 'LEFT JOIN']
]
}
await Db.select('childs', data)
// console.log(Db.sql) // SELECT c.id,c.name,k.title FROM fix_childs AS c LEFT JOIN fix_kinder k ON c.yid=k.id LIMIT 10
// Explained ②
//WHERE 用法
let data = {
'where' : {
'id' : 5, // id=5
'ctime' : ['>', 100], // ctime > 100
'ctimes': [ '>', 100, '<', 200 ], // ctimes > 100 AND ctimes < 200
'ids' : [ '>', 100, '<', 200, 'or' ], // ( ids > 100 OR ids < 200 )
'name' : ['like', 'hangyuedu%'], // name like 'hangyuedu%'
'uid' : ['in', '(1,2,3)'] // uid in (1,2,3)
}
}
INSERT
let data = {
'name' : 'qc',
'status' : 1
}
let result = await this.Db.insert('msg', data)
UPDATE
let whereData = { // See below ②
'id' : 5
}
let updateData = {
'name' : 'qc',
'status' : 1
}
let result = await this.Db.update('msg', whereData, updateData)
DELETE
let map = { // See below ②
'id' : 5
}
let result = await this.Db.delete('msg', map)
事务
await Db.startTrans() // 开启事务
try{
await Db.delete('table', {'id':2})
await Db.insert('table', { 'msgp' :'11', 'time' : '1572217706' })
await Db.update('table', {'id':2}, { 'msgp' : '22' })
if(await Db.commit()) { // 提交事务
}
} catch(err) {
await Db.rollback() // 事务回滚
}
事务可以同步写法真的爽歪歪~
是不是增删改查的写法简单很多了~