nodejs 优雅的连接 mysql
1.mysql 及 promise-mysql
nodejs 连接 mysql 有成熟的npm包 mysql ,如果需要promise,建议使用 promise-mysql;
npm:https://www.npmjs.com/package/mysql
https://www.npmjs.com/package/promised-mysql
在实际开发中,单独的connection 并不能满足业务需要,需要使用连接池进行连接的建立及释放,promise-mysql 建立连接池非常简单:
const config = {
host:'xxxxxx', // ip也行域名也行
user:'root',
password:'123456',
connectionLimit:30,
database:'movie', // database
port:'8306'
};
// 建立连接池
const pool = mysql.createPool(config);
// 使用pool.query 快速连接执行sql
pool.query('xxxx');
// 用using/dispsoer 模式构建自动释放资源的连接
function getSqlConnection(){
return pool.getConnection().disposer((c)=>{
pool.releaseConnection(c);
});
}
// 需要使用bluebird 封装具有dispsoer功能的promise对象
function query(sql){
return Promise.using(getSqlConnection(),(con)=>{
return sql?con.query(sql):con;
})
}
经过对mysql 连接的promise封装,我们可以使用async/await方式进行愉快的编程
2.通过promise-mysql执行事务
通过connection对象的beginTransaction、commit 及 rollback 即可实现
async function execAffairs(){
console.log('begin execAffairs');
// 写事务
const conn = await query();
await conn.beginTransaction(); // begin;
try{
await conn.query('select * from movie_detail where m_id=242167 for update');
await conn.query('update movie_detail set m_record=7.5 where m_id=242167');
await conn.commit();// commit
console.log('commit 完毕');
} catch(e){
console.log('事务出错',e);
await conn.rollback();
}
/******
// 无需release
finally{
conn.release();
}
*/
}
由于本示例使用了promise-mysql 的disposer 模式,所以无需额外处理 连接的 release
相关代码请见:https://github.com/JhoneLee/nodeScheduleMySql
nodejs 优雅的连接 mysql的更多相关文章
- nodejs中如何连接mysql
nodejs中如何连接mysql,下面给出一个小Demo. 第一步安装mysql模块npm install mysql 第二步导入mysql模块var mysql = require('mysql') ...
- nodejs进阶(6)—连接MySQL数据库
1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...
- nodejs笔记之连接mysql数据库
1.安装mysql模块: npm install mysql 2.引入mysql模块 创建一个server.js文件 const http = require("http"); c ...
- nodejs连接mysql并进行简单的增删查改
最近在入门nodejs,正好学习到了如何使用nodejs进行数据库的连接,觉得比较重要,便写一下随笔,简单地记录一下 使用在安装好node之后,我们可以使用npm命令,在项目的根目录,安装nodejs ...
- nodejs连接mysql实例
1.在工程目录下运行npm install mysql安装用于nodejs的mysql模块: 2.创建db.js模块用于连接mysql,同时定义query查询方法: var mysql = requi ...
- 用Nodejs连接MySQL
转载,原地址:http://blog.fens.me/nodejs-mysql-intro/ 前言 MySQL是一款常用的开源数据库产品,通常也是免费数据库的首选.查了一下NPM列表,发现Nodejs ...
- 如何在 Swoole 中优雅的实现 MySQL 连接池
如何在 Swoole 中优雅的实现 MySQL 连接池 一.为什么需要连接池 ? 数据库连接池指的是程序和数据库之间保持一定数量的连接不断开, 并且各个请求的连接可以相互复用, 减少重复连接数据库带来 ...
- 转】用Nodejs连接MySQL
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/2/ 感谢! 用Nodejs连接MySQL 从零开始node ...
- 使用nodejs连接mysql数据库实现增删改查
首先要有数据库 使用xampp 或者 phpstudy 可以傻瓜式安装 新建一个项目文件夹 之后在这个目录下初始化package.json (npm init) 先在项目中安装mysql 和 ex ...
随机推荐
- javascript中的this作用域详解
javascript中的this作用域详解 Javascript中this的指向一直是困扰我很久的问题,在使用中出错的机率也非常大.在面向对象语言中,它代表了当前对象的一个引用,而在js中却经常让我觉 ...
- CentOS 双网卡绑定实现平衡负载
绑定两块网卡主要为了解决网卡故障.负载均衡等问题. 1.在vm加一块网卡,登录后检查网卡是否识别. 分别用ip addr和nmcli查看网卡的情况 [root@bigdata-senior01 ~]# ...
- CC TSUBSTR:Substrings on a Tree——题解
https://www.codechef.com/problems/TSUBSTR https://vjudge.net/problem/CodeChef-TSUBSTR 给一棵点权为字母的树,你只能 ...
- LOJ6303:水题——题解
https://loj.ac/problem/6303 题目来自LOJ. 就记一个公式,设f(n,k)为n!里分解得到的k(k为质数)的个数,则f(n,k)=f(n/k,k)+n/k. 证明很好证,显 ...
- Android源码4.4.4_r1下载和编译
系统:ubuntu 16.04.2 TLS 1.源码下载: sudo apt-get install curl curl https://storage.googleapis.com/git-repo ...
- 【优先队列】【UVa11997】K Smallest Sums
传送门 Description Input Output Translation · 给定k个长度为k的数组,把每个数组选一个元素加起来,这样共有kk种可能的答案,求最小的k个 Sample Inpu ...
- 解密百度图片URL
今天想爬百度图片搜索,但因为爬出来的链接乱七八糟,有些打不开,对于我这个完美主义者而言,这实在是太残酷,但我还是把爬虫过程的核心部分——解密URL给记录下来了. 下图是捕获的json数据的其中一条数据 ...
- pg_basebackup: invalid tar block header size
问题: 在使用pg_basebackup搭建备节点时,由于pg_basebackup本身使用的是int整型来保存传输的数据大小,当传输的数据大于4G的话,整数就会溢出,进而报出:pg_baseback ...
- 在CentOS6.5 下安装并使用Java开发opencv的配置(一)
1) 安装gcc以及cmake等等乱七八糟的软件 yum install gcc yum install python yum install cmake yum groupinstall " ...
- Spring Boot 打包部署
一.打包成jar并部署 1.工程--右键选择运行配置: 在Goals中输入: org.apache.maven.plugins:maven-jar-plugin:.RELEASE:repackage ...