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 ...
随机推荐
- 转:DP和HDP
Dirichlet Process and Hierarchical Dirichlet Process 原文:http://hi.baidu.com/zentopus/item/46a622f5ef ...
- [NOIP2012 TG D2T1]同余方程
题目大意:求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 题解:即求a在mod b意义下的逆元,这里用扩展欧几里得来解决 C++ Code: #include<cstdio ...
- Android原生代码拦截H5 Web页面中JavaScript弹窗/弹框
<html> <body> <script> function showAlert(){ alert("JavaScript - hello , worl ...
- BZOJ 1342: [Baltic2007]Sound静音问题 | 单调队列维护的好题
题目: 给n个数字,一段合法区间[l,l+m-1]要求max-min<=c 输出所有合法区间的左端点,如果没有输出NONE 题解: 单调队列同时维护最大值和最小值 #include<cst ...
- UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用)
UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用) 题意分析 绝对的好题. 先说做完此题的收获: 1.对数据结构又有了宏观的上的认识; 2.熟悉了常用STL ...
- IT英语累积
JPA: Java Persistence API 一种持久化规范 Spring Data:一种用于简化数据库访问,支持云服务的开源框架 Spring Data JPA:是Spring Data的 ...
- js判断设备类型
1. 判断微信 function is_weixin() { var ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/Micr ...
- 【贪心/DP/单调队列】【CF1029B】Creating the Contest
Description 给你一个单调不下降的长度为n的序列,请你找出一个最长的子序列,满足找出的子序列中,\(A_i<=A_{i-1}~\times~2\),其中i为下标,A为找出的子序列.对于 ...
- 第六章 指针与const
const一词在字面上来源于常量constant,const对象在C/C++中是有不同解析的,如第二章所述,在C中常量表达式必须是编译期,运行期的不是常量表达式,因此C中的const不是常量表达式:但 ...
- zoj 2369 Two Cylinders
zoj 2369 Two Cylinders 链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2369 题意:已知两个无 ...