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 );

 


__EOF__

本文作者FreeSql & CSRedis
本文链接https://www.cnblogs.com/kellynic/p/5295156.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   nicye  阅读(715)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示