NodeJs mysql 开启事务
如题;node后台使用mysql数据库,并使用事务来管理数据库操作。
这里主要讲一个事务的封装并写了一个INSERT 插入操作。
code:
基础code:
db.config.js
const mysql = require('mysql')
const pool = mysql.createPool({
connectionLimit: 20, //连接池连接数
host: 'localhost', //数据库地址,这里用的是本地
database: 'xxxx', //数据库名称
user: 'xxxxx', // username
password: '*****' // password
})
//返回一个Promise链接
const connectHandle = () => new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
if(err) {
console.error('链接错误:' + err.stack + '\n' + '链接ID:' + connection.threadId)
reject(err)
} else {
resolve(connection)
}
})
})
module.exports = connectHandle
事务操作
const connectHandler = require('./db.config') //引入上面所讲的数据库基础配置
const insertHandler = async (vals) => {
const connection = await connectHandler() // 得到链接
const tablename = 'xxxxx' //动态table(表)名称
//开启事务
connection.beginTransaction( err => {
if(err) {
return '开启事务失败'
} else {
//执行INSERT插入操作
connection.query(`INSERT INTO ${tablename} SET ?`, vals, (e, rows, fields) => {
if(e) {
return connection.rollback(() => {
console.log('插入失败数据回滚')
})
} else {
connection.commit((error) => {
if(error) {
console.log('事务提交失败')
}
})
connection.release() // 释放链接
return {rows, success: true} // 返回数据库操作结果这里数据格式可根据个人或团队规范来定制
}
})
}
})
}
module.exports = {
insertHandler
}
相关操作步骤已经在注释中写明,本人实测有效。如需使用需加上自己的数据库配置及相关表明等动态配置。
NodeJs mysql 开启事务的更多相关文章
- mysql 开启事务
START TRANSACTION, COMMIT, and ROLLBACK Syntax 开始事务,提交和回滚语法 那些语句提供了控制事务的使用: 1.START TRANSACTION 或者BE ...
- MySql开启事务
CREATE PROCEDURE test_sp1( ) BEGIN ; ; START TRANSACTION; INSERT INTO test VALUES(NULL, 'test sql 00 ...
- [原创]MySQL RR隔离级别下begin或start transaction开启事务后的可重复读?
Server version: 5.6.21-log MySQL Community Server (GPL) 前提提要: 我们知道MySQL的RR(repeatable read)隔 ...
- Node后台使用mysql并开启事务
如题:node后台使用mysql数据库,并使用事务来管理数据库操作. 这里主要讲一个事务的封装并写了一个INSERT 插入操作. code: 基础code: db.config.js const my ...
- 事务的隔离级别,mysql中开启事务、django中开启事务
目录 一.事务的特性 二.数据库中开启事务 三.Django中开启事务的两种方式 第一种 第二种 四.事务的隔离级别 隔离级别 如何查看mysql隔离级别? 修改事务的隔离级别 隔离级别解释 read ...
- Angular4+NodeJs+MySQL 入门-02 MySql操作类
NodeJs操作MySQL类 此类封装了几个常用的方法:插入,更新,删除,查询,开启事务,事务提交,事务回滚等操作.有一这个类,操作MYSQL就方便多了. 批处理,存储过程等方法还没有添加,因为觉得目 ...
- MySql - InnoDB - 事务 , Php版
(出处:http://www.cnblogs.com/linguanh/) 1,前序 由于要重构APP(社交类) 服务端接口的部分代码,故接触到了 innoDB,以及事务这个词,下面主要是以例子的形式 ...
- MySQL 数据库事务与复制
好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式 ...
- nodejs+mysql
接着上一篇的php+mysql,我们来试一试nodejs怎么实现数据的增删查改. Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件 ...
随机推荐
- python 网络编程---粘包
一.什么是粘包?(只有在TCP中有粘包现象,在UDP中永远不会粘包) 黏包不一定会发生. 如果发生 了:1.可能是在客户端已经粘了 2.客户端没有粘,可能是在服务端粘了. 所谓的粘包问题:主要是是因为 ...
- python 函数--迭代器
一.迭代协议: 可以被迭代要满足要求的就叫做可迭代协议.内部实现__iter__方法. iterable:可迭代的--对应的标志. 什么叫做迭代?:可以一个一个取值,就像for循环一样取值. 字符串, ...
- 登陆ECP后,无法正常现实OU
当我们在ECP创建邮箱账户或者会议室的时候,发现无法预览所有OU信息 这是因为,默认情况下,Exchange只能识别到500个OU,如果要解决这个问题就需要我们到后端服务器修改配置文件 文件路径:C: ...
- 列表推导式和seed()的理解
Table of Contents generated with DocToc 列表推导式和seed()的理解 对seed()的理解 列表推导式 第一种用法 第二种用法 列表推导式和seed()的理解 ...
- C#多线程(4):进程同步Mutex类
Mutex 类 构造函数和方法 系统只能运行一个程序的实例 解释一下上面的示例 接替运行 进程同步示例 另外 Mutex 类 Mutex 中文为互斥,Mutex 类叫做互斥锁.它还可用于进程间同步的同 ...
- 1 - Apache HttpClient 简单使用
Apache HttpClient 是Apache 开源的实现Http协议的java开源库. HttpClien 是客户端的HTTP通信实现库,实现HTTP GET 和POST请求,获取响应内容. A ...
- L9循环神经网络进阶 ModernRNN
GRU RNN存在的问题:梯度较容易出现衰减或爆炸(BPTT) ⻔控循环神经⽹络:捕捉时间序列中时间步距离较⼤的依赖关系 RNN: Ht=ϕ(XtWxh+Ht−1Whh+bh) H_{t} = ϕ(X ...
- [RCTF2015]EasySQL
[RCTF2015]EasySQL EasySQL github 打开靶机,是如下界面 到注册页面,试了一下,username 和 email 处有过滤,直接 fuzz 一下哪些字符被禁了 注册成功之 ...
- 彻底解决Python编码问题
1. 基本概念 字符集(Character set) 解释:文字和符合的总称 常见字符集: Unicode字符集 ASCII字符集(Unicode子集) GB2312字符集 编码方法(Encoding ...
- TensorFlow keras dropout层
# 建立神经网络模型 model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), # 将输入数据的形状进行修改成神经网 ...