//通过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 设计的原型库,支持事务/共享多次/单次查询的更多相关文章

  1. mysql数据库从删库到跑路之select单表查询

    一 介绍 本节内容: 查询语法 关键字的执行优先级 简单查询 单条件查询:WHERE 分组查询:GROUP BY HAVING 查询排序:ORDER BY 限制查询的记录数:LIMIT 使用聚合函数查 ...

  2. mysql 修改表结构以支持事务操作

    修改表的类型为 INNODB 的 SQL: alter table category_ ENGINE = innodb;     查看表的类型的 SQL show table status from ...

  3. MySql不支持事务解决

    用的是一个绿色版的mysql数据库,发现不支持事务,在网络上搜集资料找到解决方案: 1.执行语句  SHOW ENGINES; 如果发现InnoDB全部显示为“YES”,说明该版本的数据库支持事务 2 ...

  4. Mysql配置优化,库表设计

    Mysql 服务器参数类型: 基于参数的作用域: 全局参数:set global autocommit = ON/OFF; 会话参数(会话参数不单独设置则会采用全局参数):set session au ...

  5. nodejs项目mysql使用sequelize支持存储emoji

    nodejs项目mysql使用sequelize支持存储emoji 本篇主要记录nodejs项目阿里云mysql如何支持存储emoji表情. 因由 最近项目遇到用户在文本输入emoji进行存储的时候导 ...

  6. 微软企业库支持 MySql

    微软企业库支持 MySql   三步让企业库支持 mysql 数据库 1.创建 MySqlDatabaseData 类 using Microsoft.Practices.EnterpriseLibr ...

  7. NodeJs针对Express框架配置Mysql进行数据库操作

    Express版本:4.14.1 说明:如下配置以express为例进行配置并进行测试,当然mysql中间件也可以在nodejs中单独使用. 参考:NodeJs的Mysql中间件Github地址 1. ...

  8. MySQL 设计与开发规范

    MySQL 设计与开发规范 1 目的 本规范的主要目的是希望规范数据库设计与开发,尽量避免由于数据库设计与开发不当而产生的麻烦:同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好保 ...

  9. MYSQL设计优化

    本文将从各方面介绍优化mysql设计的一些方式. 1.优化sql语句 (1)定位须要优化的sql语句 1)show status统计SQL语句频率 对Myisam和Innodb存储引擎都计数的參数: ...

随机推荐

  1. FDO error:Failed to label layer(XXX) for class Default

    描述: A column was specified that does not exist. 出现这个问题的原因在于label features 展示的字段不存在或者为空,只要将其勾选去掉或者换个显 ...

  2. 我的Fitbit Force手环使用体验

    2013年底,从淘宝上代购了Fitbit Force二代,下手前也对比了当时的几个类似产品,好像记得Nike新款暂时在国内还买不到,就买下了这个,1020元,时至今日好像只需六.七百了.当时看中它的主 ...

  3. iOS 模仿微信的照片选择器

    功能和微信的基本一致. 这个选择器使用了循环方式,保证在浏览图片时内存中只加载最多3张图片.稳定的内存大小,可定义图片尺寸.详细说明在github. 下载地址: https://github.com/ ...

  4. CocoaPod出现-bash: pod: command not found 解决办法

    从过年来到公司  就不用自己电脑了    之前一直自己带电脑   昨天随便建了一个demo   使用cocoapods  发现     -bash: pod: command not found 刚开 ...

  5. UISlider常见属性

    常见属性 self.mySlider.minimumValue = 0.0;   // 最小值 self.mySlider.maximumValue = 10;    // 最大值 self.mySl ...

  6. 安卓第十三天笔记-服务(Service)

    安卓第十三天笔记-服务(Service) Servcie服务 1.服务概念 服务 windows 服务没有界面,一直运行在后台, 运行在独立的一个进程里面 android 服务没有界面,一直运行在后台 ...

  7. Swift学习--微博的基础框架搭建

    学习如何使用Swift写项目 一.搭建微博项目的主框架 1.1--搭建功能模块 1.2--在 AppDelegate 中的 didFinishLaunchingWithOptions 函数,设置启动控 ...

  8. [ASP.NET MVC]: - EF框架学习手记

    1.EF(Entity Framework)实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架. 2.什么是ORM?ORM指的是面向对象的对象模型和关系型 ...

  9. openstack 上床镜像, 创建网络, 创建虚拟机 命令

    ==================================================================================================== ...

  10. Git :fatal: 错误提示解决办法

    1-fatal: remote origin already exists.  1.先 $ git remote rm origin 2.再 $ git remote add origin git@g ...