From d933348e8d7dad7070a39668e284780c8abb07ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=87=E5=A4=A9?= Date: Thu, 21 Jun 2018 20:57:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dfilter=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E7=A9=BA=E6=9D=A1=E4=BB=B6=E5=BC=82=E5=B8=B8=E7=9A=84bug;=20ta?= =?UTF-8?q?ble=E6=96=B9=E6=B3=95=E6=94=AF=E6=8C=81=20AS=20=E5=88=AB?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- History.md | 21 ++++++++++++--------- lib/utils.js | 26 +++++++++++++++++++------- package.json | 2 +- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/History.md b/History.md index 1cfe9b0..16f5dcc 100644 --- a/History.md +++ b/History.md @@ -1,10 +1,13 @@ -# 3.0.1 / 2018-06-05 +# 3.0.2 / 2018-06-21 +* 修复filter解析空条件异常的bug; +* table方法支持 AS 别名。 + +# 3.0.1 / 2018-06-05 * 修复filter解析的一个bug # 3.0.0 / 2018-04-16 - > 这是一个全新的大版本, 不向下兼容 2.x。 * 重构 API, 使用链式操作, 逻辑更加清晰 @@ -13,32 +16,32 @@ * 新增 tableCreate/dbCreate 方法, 支持创建数据库/数据表 * 新增 indexCreate/indexDrop/indexList, 支持对索引的增删改查 -# 2.2.2 / 2018-03-22 +# 2.2.2 / 2018-03-22 * 增加时区和 BIGINT 配置 -# 2.2.0 / 2018-03-15 +# 2.2.0 / 2018-03-15 * 连接池增加失败移除配置和恢复时间 -# 2.1.3 / 2018-03-14 +# 2.1.3 / 2018-03-14 * 优化异常输出 -# 2.1.2 / 2018-03-06 +# 2.1.2 / 2018-03-06 * Bug 修复 * 修改连接方式 * 异常返回的格式改为对象 -# 2.1.0 / 2018-03-03 +# 2.1.0 / 2018-03-03 * 大重构, 更加简练, 结构也更加合理 -# 2.0.1 / 2017-05-22 +# 2.0.1 / 2017-05-22 * 优化一处由于 js 对象引用类型引起的混乱 -# 2.0.0 / 2017-02-26 +# 2.0.0 / 2017-02-26 * new project diff --git a/lib/utils.js b/lib/utils.js index 3153f0c..82cd838 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -113,6 +113,9 @@ function parse$opt(opt) { // 格式化表名 function fixtable(name) { + if (/ AS /i.test(name)) { + return name + } return name .split('.') .map(it => { @@ -150,22 +153,31 @@ const parser = { }, filter(opt) { + let sql = '' + if (!sql) { + return ' ' + } if (typeof opt === 'string') { - return ` WHERE ${opt} ` + sql += opt } if (typeof opt === 'function') { - return ` WHERE ${opt()} ` + sql += opt() } if (typeof opt === 'object') { if (opt.$and) { - return ` WHERE ${parse$and(opt.$and)}` + sql += parse$and(opt.$and) } else if (opt.$or) { - return ` WHERE ${parse$or(opt.$or)}` + sql += parse$or(opt.$or) + } else { + sql += parse$opt(opt) } - return ` WHERE ${parse$opt(opt)}` } - - return ' ' + sql = sql.trim() + if (sql) { + return ` WHERE ${sql} ` + } else { + return ' ' + } }, select(arr = ['*']) { diff --git a/package.json b/package.json index e865ad1..b52308b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mysqli", - "version": "3.0.1", + "version": "3.0.2", "description": "MySQL tool", "main": "index.js", "dependencies": {