nodejs 针对 mysql 设计的原型库,支持事务/共享多次/单次查询
//通过this访问内置流程对象, 在每个流程中都能使用
//this.conn => mysql-connection
//this.results => 整个流程数已经返回的值
//this.next => 函数, 可以进入下一个流程, 第一个函数为错误信息, 后面的为该流程返回值 //每个流程必须为 function() { } 或者 function(next, thisarg) {}
//next 等同于 this.next
//thisarg 等同于 this
//注意: 箭头函数中使用 this 得到的是外层 scope 的 this, 所以添加流程不能偷懒 //this 为 sql 构造器函数, 最后使用 query(done) 或者 adminQuery(done) 执行, 与 lib.dal 使用方法相同
lib.dal('select * from users where 1 = 1')
('and username=?', username).query(done);
//相当于
var sql = 'select * from users where 1 = 1';
if (usersname === null || usersname === undefined)
sql += 'and username=?'; //添加一个参数 usernname
conn.query(done); //整个事务使用同一个mysql-connection
lib.dal.trans(
//创建mysql-connection并且开启事务,
function () { //一个流程
this('select * from users').query(this.next);
},
function () { //一个流程
this('select * from users').query(this.next);
},
function () { //一个流程
this('select * from users').query(this.next);
this.next('设置任何错误信息,将回滚事务');
},
//在done方法前内置提交/回滚事务,并释放mysql-connection
(err, r) => {
//console.log(JSON.stringify(r));
}
); lib.dal.map( //使用lib.dal.map.call(流程对象 或者 mysql-connection
[11, 13, 16],
(v, k) => { //三个流程
this.next(v+2);
},
(err, r) { //done
console.log(r); // => [13, 15, 18]
}
); lib.dal.map( //同上
流程1, 流程2, 流程3, done
);
nodejs 针对 mysql 设计的原型库,支持事务/共享多次/单次查询的更多相关文章
- mysql数据库从删库到跑路之select单表查询
一 介绍 本节内容: 查询语法 关键字的执行优先级 简单查询 单条件查询:WHERE 分组查询:GROUP BY HAVING 查询排序:ORDER BY 限制查询的记录数:LIMIT 使用聚合函数查 ...
- mysql 修改表结构以支持事务操作
修改表的类型为 INNODB 的 SQL: alter table category_ ENGINE = innodb; 查看表的类型的 SQL show table status from ...
- MySql不支持事务解决
用的是一个绿色版的mysql数据库,发现不支持事务,在网络上搜集资料找到解决方案: 1.执行语句 SHOW ENGINES; 如果发现InnoDB全部显示为“YES”,说明该版本的数据库支持事务 2 ...
- Mysql配置优化,库表设计
Mysql 服务器参数类型: 基于参数的作用域: 全局参数:set global autocommit = ON/OFF; 会话参数(会话参数不单独设置则会采用全局参数):set session au ...
- nodejs项目mysql使用sequelize支持存储emoji
nodejs项目mysql使用sequelize支持存储emoji 本篇主要记录nodejs项目阿里云mysql如何支持存储emoji表情. 因由 最近项目遇到用户在文本输入emoji进行存储的时候导 ...
- 微软企业库支持 MySql
微软企业库支持 MySql 三步让企业库支持 mysql 数据库 1.创建 MySqlDatabaseData 类 using Microsoft.Practices.EnterpriseLibr ...
- NodeJs针对Express框架配置Mysql进行数据库操作
Express版本:4.14.1 说明:如下配置以express为例进行配置并进行测试,当然mysql中间件也可以在nodejs中单独使用. 参考:NodeJs的Mysql中间件Github地址 1. ...
- MySQL 设计与开发规范
MySQL 设计与开发规范 1 目的 本规范的主要目的是希望规范数据库设计与开发,尽量避免由于数据库设计与开发不当而产生的麻烦:同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好保 ...
- MYSQL设计优化
本文将从各方面介绍优化mysql设计的一些方式. 1.优化sql语句 (1)定位须要优化的sql语句 1)show status统计SQL语句频率 对Myisam和Innodb存储引擎都计数的參数: ...
随机推荐
- Android NDK
1.Android之NDK开发 http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html
- Android—SQLITE数据库的设计和升降级
Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动 ...
- iOS开发之网络编程--小文件下载
文件下载方式: 如果下载的文件比较小,下载方式: 直接用NSData的 +(id)dataWithContentsOfURL:(NSURL*)url; 利用NSURLConnection发送一个HTT ...
- iOS之UI--通讯录的实例关键知识技术点积累
通讯录的实例关键知识技术点积累 效果展示: 作为博文笔记,既然是笔记,目的是为了能够以后做这个项目能够快速上手,如果这是我下一次阅览这个博文笔记,那么我应该先空手从零开始做,需求也就是这个项目的展示效 ...
- XCode升级到7后,规范注释生成器VVDocumenter插件没有用了,怎么办?
Xcode更新到7之后,发现很多插件包括规范注释生成器VVDocumenter的插件都没法用了,找遍百度都没有找到成功解决这个问题的方法,然后我突发奇想,把注释也弄进代码模板里.虽然没有插件那样灵活: ...
- github与eclipse创建仓库及克隆仓库
1.前往github官网注册账号,并下载客户端: 2.为eclipse工程创建本地仓库: 1,目前大多eclipse都预装了egit插件,如果没有请自行安装 2,在eclipse内创建工程->右 ...
- 推些C语言与算法书籍
c语言系统学习与进阶: 1. C primer plus C primer plus 作为一本被人推崇备至的 c 入门经典,C primer plus 绝非浪得虚名.应该 算得上 C 教材里最好的入门 ...
- Ubuntu升级内核
看到微软开源.兼容.豁达,很高兴,今天研究一下Docker,查看Ubuntu内核版本,发现2.3有点低,不符合当前版本. 最低内核版本要求3.10. 升级Ubuntu内核. 首先 下载内核 网站htt ...
- JavaScript中奇葩的假值
通常在以下语句结构中需要判断真假 if分支语句 while循环语句 for里的第二个语句 如 if (boo) { // do something } while (boo) { // do some ...
- Hive DDL DML SQL操作
工作中经常要用到的一些东西,一直没整理,用的多的记住了,用的不多的每次都是去查,所以记录一下. DDL(数据定义语言),那就包括建表,修改表结构等等了 建表:create hive table hiv ...