当前位置: 首页 > 后端技术 > Node.js

node.js调用mysql数据库包库node-transform-mysql库链,简单易用,文档齐全

时间:2023-04-03 19:17:00 Node.js

在自己平时的开发中,很少看到javascript的库对sql封装的比较好(我发现了我没有找了一圈,应该是我暂时没找到),所以在之前的项目中,我根据自己的项目情况实现了一套打包方式。最近准备写这样一个库,基于我之前对mysql的封装(ThinkPHP是我用过的一个PHP框架,我喜欢它的model模块调用sql的方式),所以决定参考一下它的API并用javascript实现一次。node-transform-mysql想表达的意思node.js连接mysql的库有很多,我觉得没必要自己再封装一个。为了实现库的广泛可用性,这个库只做了生成SQL语句的功能,封装了整个API采用链。调用方式,可以最大限度减少开发代码,使用自由度高。内部对链式调用方法的顺序进行了排序,不用严格按照sql语句的顺序使用方法。sql调用方法直接引用ThinkPHP的api,不需要自己重新定义方法名。自由、简洁、易用是它想要表达的完整API文档。写文档比写代码更累,花的时间也更长。可见开源框架文档的价值。向他们致敬输入正文:介绍:node-transform-mysql是在node.js场景下使用mysql,根据传入的参数生成相应的sql语句,它做的事情很简单,也很具体。它只负责生成SQL语句,不进行任何实际的增删改查。您不必担心它的大小。整体代码300行左右,压缩后代码不到8k。github地址:https://github.com/wangweiang...npm地址:https://www.npmjs.com/package...API文档地址:https://wangweianger.gitbooks...安装:npminstallnode-transform-mysql然后使用支持CommonJS或者ES2015的模块管理器,比如webpack://使用ES6转译器,比如babelimportsqlfromnode-transform-mysql//不要使用ES6转译器varsql=require('node-transform-mysql')sql内部已经对调用方法的顺序进行了排序,所以你可以写简单的用法查询,而不用严格遵循sql语句的顺序.table('node_table').where('id=1')。select()SELECT*FROMnode_tableWHEREid=1sql.table('node_table').field('id,name').where({id:1}).select()SELECTid,nameFROMnode_tableWHEREid=1数据库Insertsql.table('node_table').data({name:'zane',email:'752636052@qq.com'}).insert()INSERTINTOnode_table(name,email)VALUES(`zane`,`752636052@qq.com`)更新sql.table('node_table').data({name:'zane',email:'752636052@qq.com'}).update()UPDATEnode_tableSETname=`zane`,email=`752636052@qq.com`deletesql.table('node_table').where({name:'zane'}).delet();从没有删除de_tableWHEREname=`zane`高级用法数据库的查询是最复杂的,所以高级用法主要针对查询//参数json多字段sql.table('node_table').where({id:1,name:'zane'}).select()SELECT*FROMnode_tableWHEREid=1ANDname=`zane`//参数数组letdata=[{id:1,name:'zhangsan',_type:'or'},{sex:1,number:3}]sql.table('node_table').where(data).select()SELECT*FROMnode_tableWHERE(id=1ORname=`zhangsan`)AND(sex=1ANDnumber=3)//多字段连接方式letdata=[{id:1,name:'zhangsan',_type:'or',_nexttype:'or'},{sex:1,number:3,_type:'and'}]sql.table('node_table').where(data).select()SELECT*FROMnode_tableWHERE(id=1ORname=`zhangsan`)OR(sex=1ANDnumber=3)//表达式查询letdata={id:{eq:100,egt:10,_type:'or'},name:'zhangshan'}sql.table('node_table').where(data).select()SELECT*FROMnode_tableWHERE((id=100)OR(id>=10))ANDname=`zhangshan`//混合查询letdata=[{id:{eq:100,egt:10,_type:'or'},name:'zhangshan',_nexttype:'or'},{status:1,name:{like:'%zane%'}}]sql.table('node_table').where(data).select()SELECT*FROMnode_tableWHERE(((id=100)OR(id>=10))ANDname=`zhangshan`)OR(status=1AND((nameLIKE`%zane%`)))//UNION,UNIONALL组合使用sql.union('SELECT*FROMthink_user_1',true).union('SELECT*FROMthink_user_2',true).union(['SELECT*FROMthink_user_3','SELECTnameFROMthink_user_4']).union('SELECT*FROMthink_user_5',true).select()得到(SELECT*FROMthink_user_1)UNIONALL(SELECT*FROMthink_user_2)UNIONALL(SELECT*FROMthink_user_3)UNION(SELECTnameFROMthink_user_4)UNION(SELECT*FROMthink_user_5)//子查询letsqlstring=sql.field('id,name').table('node_table').group('field')sql.table(sqlstring).group('field').where('id=1').order('status').select()得到SELECT*FROM(SELECTid,nameFROMnode_tableGROUPBYfield)WHEREid=1GROUPBYfieldORDERBYstatus更多使用方法请查看详细文档API文档地址:https://wangweianger.gitbooks...项目运行gitclonehttps://github.com/wangweianger/node-transform-mysql.gitnpminstall//dvenpmrundve//productnpmrunbuild这个库后期会根据自己的使用情况不断完善,欢迎大家提出建议。如果确定对你有帮助,欢迎给个star