1. //通过this访问内置流程对象, 在每个流程中都能使用
  2. //this.conn => mysql-connection
  3. //this.results => 整个流程数已经返回的值
  4. //this.next => 函数, 可以进入下一个流程, 第一个函数为错误信息, 后面的为该流程返回值
  5.  
  6. //每个流程必须为 function() { } 或者 function(next, thisarg) {}
  7. //next 等同于 this.next
  8. //thisarg 等同于 this
  9. //注意: 箭头函数中使用 this 得到的是外层 scope 的 this, 所以添加流程不能偷懒
  10.  
  11. //this 为 sql 构造器函数, 最后使用 query(done) 或者 adminQuery(done) 执行, 与 lib.dal 使用方法相同
  12. lib.dal('select * from users where 1 = 1')
  13. ('and username=?', username).query(done);
  14. //相当于
  15. var sql = 'select * from users where 1 = 1';
  16. if (usersname === null || usersname === undefined)
  17. sql += 'and username=?'; //添加一个参数 usernname
  18. conn.query(done);
  19.  
  20. //整个事务使用同一个mysql-connection
  21. lib.dal.trans(
  22. //创建mysql-connection并且开启事务,
  23. function () { //一个流程
  24. this('select * from users').query(this.next);
  25. },
  26. function () { //一个流程
  27. this('select * from users').query(this.next);
  28. },
  29. function () { //一个流程
  30. this('select * from users').query(this.next);
  31. this.next('设置任何错误信息,将回滚事务');
  32. },
  33. //在done方法前内置提交/回滚事务,并释放mysql-connection
  34. (err, r) => {
  35. //console.log(JSON.stringify(r));
  36. }
  37. );
  38.  
  39. lib.dal.map( //使用lib.dal.map.call(流程对象 或者 mysql-connection
  40. [11, 13, 16],
  41. (v, k) => { //三个流程
  42. this.next(v+2);
  43. },
  44. (err, r) { //done
  45. console.log(r); // => [13, 15, 18]
  46. }
  47. );
  48.  
  49. lib.dal.map( //同上
  50. 流程1, 流程2, 流程3, done
  51. );

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. 桥牌笔记 Skill Level 4 C7 小心将吃

    南主打5H. 看来问题不大,但要小心南的方块AK会阻塞桥路. 如果方块3-2分布,并且将牌也3-2分布,就很容易. 如果红桃4-1分布,那是死定了. 如果方块4-1分布,还有希望完成的! 为了防止东家 ...

  2. UIWebView的基本用法

    一.UIWebView的基础使用 1.创建UIWebView: CGRect bouds = [[UIScreen manScreen]applicationFrame]; UIWebView* we ...

  3. 深入理解java虚拟机(6)---内存模型与线程 & Volatile

    其实关于线程的使用,之前已经写过博客讲解过这部分的内容: http://www.cnblogs.com/deman/category/621531.html JVM里面关于多线程的部分,主要是多线程是 ...

  4. node.js之excel文件读取

    金天:学习一个新东西,就要持有拥抱的心态,如果固守在自己先前的概念体系,就会有举步维艰的感觉.node.js解析excel, 读取记录. 业务需求,从excel (xlsx, xls)导入数据. 备选 ...

  5. C++静态计算的例子

    写一个函数,用递归函数完成以下运算: sum(n) =  1 – 1/2 + 1/3 – 1/4 + … -(1/n)*(-1)n        (其中n>0) 函数原型:         fl ...

  6. Xcode模拟器和真机生成的日志查看(转载)

    在进行实际代码开发的过程中,我们会生成一些plist文件,但是如何在调试过程中查看这些plist文件是否被成功生成以及生成的内容是否正确? 如果查看模拟器生成的日志和真机生成的日志到底如何查看? DE ...

  7. INFORMATICA 的部署实施之 BACKUP&RESTORE

    当一套BI 解决方案成熟运行后,公司会快速扩大客户群,这时快速的将开发出来的SOLUTION 应用到全新的生产环境中就很重要了,下面谈谈我做这样项目(INFORMATICA BACKUP&RE ...

  8. Effective Java 75 Consider using a custom serialized form

    Principle Do not accept the default serialized form without first considering whether it is appropri ...

  9. SQLServer中char与varchar的区别

    今天写一个项目的用户登录部分 刚开始做,所以是数据库和程序一起写 一开始没注意 在定义表T_Person时吧PerID和PerPwd的类型设定都是char(20) 并且写入了几个数据,诸如 id:01 ...

  10. 微信开发(03)之新建按钮时报错 errcode 40054

    在微信开发新建公众号的按钮时,报错如下: {errcode:40054,errmsg:"invalid sub button url domain"} 经过仔细排查,发现是url地 ...