node连接mysql,增删改查并支持事务操作,中间件qc-mysql

由于用不惯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()  // 事务回滚
    }

事务可以同步写法真的爽歪歪~

是不是增删改查的写法简单很多了~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js 的 MySQL 分表分库数据访问中间件,实现MySQL数据的分布式集群储存管理。在处理海量数据、高并发访问时,获得更加优越的性能及横向扩展能力。它包含以下主要特性: 可伸缩、高扩展的架构 自动路由分库,维护数据库连接支持数据表的“横向”和“纵向”分表 支持“一主多从”式读写分离 分布式并行处理,成倍提升性能 对应用层隐藏数据来源及技术细节 拥有以上特点意味着,可随时通过增加普通级别数据库服务器的方式,方便地扩展整体系统性能,而无需修改业务层架构和代码。理论上TribeDB的扩展能力上线在于主库单表插入性能和主从数据同步开销。通过合理设计“横向”和“纵向”分表和数据切分粒度,可轻松应对上亿级别的数据量和访问请求。 快速上手: var tribe = require('tribedb'); //载入配置文件,sync选项为true 表示同步读取解析配置文件 tribe.configure('/path/to/tribe.conf',{sync:true}); //通过数据库表名建立查询请求 var db = tribe.createQuery('my_table'); //插入封装 db.data({title:'标题'}).insert(function(err, data){   console.log(err);   console.log(data); }); //查询封装 db.where('title','标题').order_by('time','DESC').limit(1).select(function(err, data){   console.log(err);   console.log(data); }); //不使用封装的操作,直接执行sql tribe.query('SELECT * FROM user_0 WHERE id=1 LIMIT 1',function(err, data){   console.log(err);   console.log(data); }); TribeDB 通过全局唯一的表名,自动连接对应的数据库,并通过分表配置,将操作映射到涉及的分表,同时完成读写分离。 一切都由 TribeDB 自动完成,业务层不必关心数据的位置。当数据库负载过高需要添加服务器时,只需简单修改配置文件而不必修改业务代码,甚至将整个架构推倒重来。继续阅读文档详细了解如何使用。 标签:TribeDB

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值