Nodejs连接服务器连接mysql数据库(带事务功能)
来源:互联网 发布:地铁刷卡数据存闸机 编辑:程序博客网 时间:2024/06/05 19:08
mySqlJustQuery.js
/** * 获取连接,该连接提供事务功能的数据库功能 * funcName : 回调参数名,提供回调入口 */exports.getClient =function (funcName){ query.pool.acquire(function(err,client){ client.query("BEGIN;",function(err,rows,fields){ funcName(err,client);//事务功能开始。执行回调函数 }) })}/** * 如果发生错误,回滚所有事物 * client :要关闭的连接 * funcName :下一个要执行的名字(一般直接响应给客户端,请求执行失败) */exports.rollBack = function(client,res,data){ client.query("rollBack;",function(err,rows,fields){ query.pool.release(client);//关闭资源 //funcName(err,res) if(data.render){ var renderStr = data.render; delete data["render"];//返回响应页面 res.render(renderStr,data) }else { res.send(data);//响应请求处理值 } })}/** * 提交事务:异步提交事务并关闭连接 * client :连接 * funcName :下一个要执行的名字(一般直接响应给客户端,返回执行结果) */exports.endT = function(client,res,data){ client.query("COMMIT;",function(err,rows,fields){ //if(err)mySql.rollBack(client,funcName,res,"数据库执行错误"); query.pool.release(client);//关闭资源 //funcName(err,res) if(data.render){ var renderStr = data.render; delete data["render"]; res.render(renderStr,data); }else { res.send(data);//响应 } })}/** * 执行sql语句 * sql :要执行的sql语句 * client :连接 * funcName :下一个要执行的名字 */exports.querySql = function(sql,client,funcName){ client.query(sql,function(err,rows,fields){ var result = {}; result.status = "成功"; if (err){ result.status = "失败"; result.err = err; }else{ if(rows.insertId > -1){ result.affectedRows = rows.affectedRows;//受影响的行 result.changedRows = rows.changedRows;//值发生改变的行 if(rows.insertId > 0)result.insertId = rows.insertId;//insert的时候返回添加时的id }else{ result.data = rows;//如果是select时返回列表 } } funcName(err,client,result);//result数据格式为{status:"成功or失败",data:"Array Or JSON"} })}
使用流程
test.js
//事务开始var mysqlT= require("../public/mySqlJustQuery.js");module.exports.run = function(conn,body){ mysqlT.getClient(doSql);//获取连接 function doSql(err,client){ mysqlT.querySql("update user set username = 'test'",client,checkUser); } function checkUser(err,client,result){ if(err || result.status != "成功" || !result.data.length){ mysqlT.rollBack(client,res,'{status:"失败"}');//如果执行失败回滚 }else{ mysqlT.endT(client,res,'{status:"成功"}');//响应 } mysqlT.querySql("update user set passWord= 'test'",client,response); } function response(err,client,result){ if(err || result.status != "成功" || !result.data.length){ mysqlT.rollBack(client,res,'{status:"失败"}');//如果执行失败回滚 }else{ mysqlT.endT(client,res,'{status:"成功"}');//响应 } }};
阅读全文
0 0
- Nodejs连接服务器连接mysql数据库(带事务功能)
- NodeJs连接Mysql数据库
- nodejs 连接mysql数据库操练
- nodejs连接池连接mysql数据库
- NodeJS连接自定义地址的Mysql数据库
- nodejs连接mysql数据库及基本认识
- 命令行连接MySQL数据库服务器
- nacicat 连接服务器mysql数据库
- java服务器连接mysql数据库
- nodejs连接mongo数据库
- nodejs 连接数据库
- nodejs(五) 连接数据库
- nodejs 连接mysql
- 用Nodejs连接MySQL
- nodejs 连接 mysql
- NodeJS连接MySQL
- nodejs连接mysql
- nodejs连接mysql
- system verilog MATLAB学习笔记
- PHP——$_REQUEST
- 解析Kotlin内部类
- 147. Insertion Sort List
- 微信小程序开发教程、小程序资讯、小程序demo合揖(10月16日更新)
- Nodejs连接服务器连接mysql数据库(带事务功能)
- 热门开源项目:Guns-后台管理系统
- 【UVa 253】Cube painting
- 为何大量网站不能抓取?爬虫突破封禁的6种常见方法
- c++11 yield
- OLED(128*64)SSD1306驱动学习总结
- django + semantic ui 框架,接口测试正常,在前端点击按钮调用出现异常问题解决
- mongodb优化
- 搭建Jetbrains授权idea服务器