parent
97484744a7
commit
247c6591fa
|
@ -1,3 +1,12 @@
|
|||
# 3.0.7 / 2019-09-19
|
||||
* 修复tableCreate在没有索引时建表失败的bug
|
||||
* 更新文档
|
||||
|
||||
|
||||
# 3.0.6 / 2019-03-12
|
||||
* 修改默认编码为 utf8mb4
|
||||
|
||||
|
||||
# 3.0.5 / 2018-07-17
|
||||
* 修复join方法一处的笔误
|
||||
|
||||
|
|
89
docs/3.x.md
89
docs/3.x.md
|
@ -12,7 +12,7 @@ let conn = new Mysqli({
|
|||
post: 3306, //端口, 默认 3306
|
||||
user: '', //用户名
|
||||
passwd: '', //密码
|
||||
charset: '', // 数据库编码,默认 utf8 【可选】
|
||||
charset: '', // 数据库编码,默认 utf8mb4 【可选】
|
||||
db: '' // 可指定数据库,也可以不指定 【可选】
|
||||
})
|
||||
|
||||
|
@ -34,8 +34,8 @@ let conn = new Mysqli([
|
|||
|
||||
### emit([slave], [db])
|
||||
|
||||
* slave <Boolean> [可选]是否"从库", 默认为 false,
|
||||
* db <String> [可选]要连接的数据库名, 默认为空
|
||||
* slave `<Boolean>` [可选]是否"从库", 默认为 false,
|
||||
* db `<String>` [可选]要连接的数据库名, 默认为空
|
||||
|
||||
> 返回一个 db 实例, 这个方法是必须要的, 所有的 sql 操作,都要先实例一个 db 对象。
|
||||
|
||||
|
@ -57,7 +57,7 @@ db
|
|||
|
||||
### query(sql)
|
||||
|
||||
* sql <String> sql 语句, [必传]
|
||||
* sql `<String>` sql 语句, [必传]
|
||||
|
||||
> 直接执行 sql 语句, 用于在内置的 API 不满足需求的情况下, 可以自己手写 sql 执行。
|
||||
|
||||
|
@ -74,7 +74,7 @@ db.query('select * from `test`.`student` limit 10').then(result => {
|
|||
|
||||
### drop(db)
|
||||
|
||||
* db <String> [可选] 要删除 db 名, 不传则删除当前连接的数据库
|
||||
* db `<String>` [可选] 要删除 db 名, 不传则删除当前连接的数据库
|
||||
|
||||
> 删除当前或指定数据库。
|
||||
|
||||
|
@ -107,35 +107,35 @@ db.tableList().then(list => {
|
|||
|
||||
### dbCreate(name, options)
|
||||
|
||||
* name <String> [必传], 数据库名字
|
||||
* options <Object>, [必传], 数据库的配置
|
||||
- charset <String> 默认 utf8
|
||||
* name `<String>` [必传], 数据库名字
|
||||
* options `<Object>`, [必传], 数据库的配置
|
||||
- charset `<String>` 默认 utf8mb4
|
||||
|
||||
|
||||
> 创建新的数据库, 成功返回true。
|
||||
|
||||
```javascript
|
||||
db.dbCreate('foo', { charset: 'utf8mb4' }) // 默认是utf8
|
||||
db.dbCreate('foo', { charset: 'utf8' }) // 默认是utf8mb4
|
||||
```
|
||||
|
||||
|
||||
|
||||
### tableCreate(name, columns ,options)
|
||||
|
||||
* name <String> [必传], 表名字
|
||||
* columns <Array>, [必传], 表字段的配置
|
||||
- name <String> 字段名, 区分大小写, 建议全小写+下划线
|
||||
- type <String> 字段类型, 不区分大小写
|
||||
- primary <Boolean> 是否主键(有且只能有 1 个主键)
|
||||
- inc <Boolean> 是否自增(只允许主键设置,且为整型时才可设置)
|
||||
- notnull <Boolean> 是否允许非空
|
||||
- index <Boolean> 是否设为索引
|
||||
- unique <Boolean> 是否为 唯一索引
|
||||
- default <Any> 设置默认值
|
||||
- update <Boolean> 是否自动更新(只有 datetime & timestamp 可以设)
|
||||
* options <Object>, [必传], 表的配置
|
||||
- charset <String> 默认 utf8
|
||||
- engine <String> 默认 InnoDB
|
||||
* name `<String>` [必传], 表名字
|
||||
* columns `<Array>`, [必传], 表字段的配置
|
||||
- name `<String>` 字段名, 区分大小写, 建议全小写+下划线
|
||||
- type `<String>` 字段类型, 不区分大小写
|
||||
- primary `<Boolean>` 是否主键(有且只能有 1 个主键)
|
||||
- inc `<Boolean>` 是否自增(只允许主键设置,且为整型时才可设置)
|
||||
- notnull `<Boolean>` 是否允许非空
|
||||
- index `<Boolean>` 是否设为索引
|
||||
- unique `<Boolean>` 是否为 唯一索引
|
||||
- default `<Any>` 设置默认值
|
||||
- update `<Boolean>` 是否自动更新(只有 datetime & timestamp 可以设)
|
||||
* options `<Object>`, [必传], 表的配置
|
||||
- charset `<String>` 默认 utf8mb4
|
||||
- engine `<String>` 默认 InnoDB
|
||||
|
||||
|
||||
> 创建新的数据表, 成功返回true。
|
||||
|
@ -164,8 +164,7 @@ db.tableCreate('student',
|
|||
index: true
|
||||
},
|
||||
...
|
||||
]
|
||||
{charset: 'utf8mb4'}) // 默认是utf8
|
||||
])
|
||||
```
|
||||
|
||||
|
||||
|
@ -174,7 +173,7 @@ db.tableCreate('student',
|
|||
|
||||
### table(name)
|
||||
|
||||
* name <String> [必传], 数据表名字
|
||||
* name `<String>` [必传], 数据表名字
|
||||
|
||||
> 选择指定表。 返回一个表操作的 API 实例
|
||||
|
||||
|
@ -192,9 +191,9 @@ let table = db.table('student') //
|
|||
|
||||
### leftJoin(tables)
|
||||
|
||||
* tables <Array> 左联, 可以联多个表
|
||||
- table <String> 表名
|
||||
- on <String> 左联的条件
|
||||
* tables `<Array>` 左联, 可以联多个表
|
||||
- table `<String>` 表名
|
||||
- on `<String>` 左联的条件
|
||||
|
||||
|
||||
```javascript
|
||||
|
@ -222,7 +221,7 @@ db.table('student')
|
|||
|
||||
|
||||
### filter(options)
|
||||
* options <Object>
|
||||
* options `<Object>`
|
||||
|
||||
> 查询过滤, 这个方法是增删改查中使用率最高的。 也是 Mysqli 模块的核心方法之一。也是参数最复杂的方法, 一条查询里, 只能出现一次 filter, 多次调用, 会覆盖之前的条件.
|
||||
> options 里有几个特殊的关键字
|
||||
|
@ -294,7 +293,7 @@ db
|
|||
|
||||
|
||||
### sort(keys)
|
||||
* keys <Object>
|
||||
* keys `<Object>`
|
||||
|
||||
> 对结果集排序
|
||||
|
||||
|
@ -316,7 +315,7 @@ db
|
|||
|
||||
### skip(num)
|
||||
|
||||
* num <Number>
|
||||
* num `<Number>`
|
||||
|
||||
> 跳过指定条数, 可用于分页。
|
||||
|
||||
|
@ -331,7 +330,7 @@ db.table('student').skip(10) // 跳过前9条, 即从第10条结果开始返回
|
|||
|
||||
### limit(num)
|
||||
|
||||
* num <Number>
|
||||
* num `<Number>`
|
||||
|
||||
> 限制返回的结果总数, 做分页时, 配合 skip 方法使用。
|
||||
|
||||
|
@ -347,8 +346,8 @@ db.table('student').limit(10) // 限制只返回10条记录
|
|||
|
||||
### slice(start, end)
|
||||
|
||||
* start <Number>
|
||||
* end <Number>
|
||||
* start `<Number>`
|
||||
* end `<Number>`
|
||||
|
||||
> 截取指定范围的结果集, 这是 skip & limit 结合体。
|
||||
|
||||
|
@ -369,7 +368,7 @@ db
|
|||
|
||||
### withFields(fields)
|
||||
|
||||
* fields <Array> [可选], 不传则返回所有的字段
|
||||
* fields `<Array>` [可选], 不传则返回所有的字段
|
||||
|
||||
> 指定要返回的字段
|
||||
|
||||
|
@ -382,7 +381,7 @@ db.table('student').withFields(['id', 'name', 'sex']) // 只取 学号,姓名,
|
|||
|
||||
### getAll([ids])
|
||||
|
||||
* ids <Array> [可选],返回指定 id 的结果集; 不传则返回所有结果集。(仅当没有调用过 filter 的情况下,本参数才有效)
|
||||
* ids `<Array>` [可选],返回指定 id 的结果集; 不传则返回所有结果集。(仅当没有调用过 filter 的情况下,本参数才有效)
|
||||
|
||||
> 返回符合条件的所有记录, 这个方法是 查询必须要调用的方法之一, 上面 .filter, .sort 等方法, 只是组件条件, 并不会返回结果, 只有调用了 getAll/get 之后, 才会返回结果集。
|
||||
> `这里有一个地方要注意的, 传入的参数ids, 即意味着, 该数据表里, 必须有一个字段为"id", 否则会出错, 没有id的表, 查询时请使用 .filter过滤。`
|
||||
|
@ -425,7 +424,7 @@ db
|
|||
|
||||
### get(id)
|
||||
|
||||
* id <Any> [可选], 传入单个 ID。
|
||||
* id `<Any>` [可选], 传入单个 ID。
|
||||
|
||||
> 该方法是对 getAll 的补充, 它最终是调用 getAll 来实现, 目的在于返回 单个结果集(不是数组)。
|
||||
|
||||
|
@ -473,7 +472,7 @@ db
|
|||
|
||||
|
||||
### insert(doc)
|
||||
* doc <Object> 要插入的记录
|
||||
* doc `<Object>` 要插入的记录
|
||||
|
||||
> 用于插入单条记录。如果有自增ID的话, 将返回刚插入的记录的自增ID。
|
||||
|
||||
|
@ -494,7 +493,7 @@ db
|
|||
|
||||
|
||||
### update(doc)
|
||||
* doc <Object> 要插入的记录
|
||||
* doc `<Object>` 要插入的记录
|
||||
|
||||
> 用于更新指定条件的记录, 返回成功修改的总数
|
||||
|
||||
|
@ -579,7 +578,7 @@ db
|
|||
|
||||
|
||||
### indexDrop(name)
|
||||
* name <String> 索引名
|
||||
* name `<String>` 索引名
|
||||
|
||||
> 删除当前表的指定索引. 成功返回true。
|
||||
|
||||
|
@ -596,10 +595,10 @@ db
|
|||
|
||||
|
||||
### indexDrop(name, options)
|
||||
* name <String> 索引名
|
||||
* options <Object> 索引的配置
|
||||
- field <String> 该索引绑定的字段
|
||||
- unique <Bollean> 是否是唯一索引
|
||||
* name `<String>` 索引名
|
||||
* options `<Object>` 索引的配置
|
||||
- field `<String>` 该索引绑定的字段
|
||||
- unique `<Bollean>` 是否是唯一索引
|
||||
|
||||
|
||||
> 给当前表创建索引. 成功返回true。
|
||||
|
|
|
@ -124,7 +124,7 @@ class Api {
|
|||
}
|
||||
|
||||
// 创建新的数据库
|
||||
dbCreate(name, { charset = 'utf8' }) {
|
||||
dbCreate(name, { charset = 'utf8mb4' }) {
|
||||
if (!name) {
|
||||
return Promise.reject('Empty database name.')
|
||||
}
|
||||
|
@ -146,7 +146,7 @@ class Api {
|
|||
}
|
||||
|
||||
// 创建新的表,
|
||||
tableCreate(name, fields, { charset = 'utf8', engine = 'InnoDB' }) {
|
||||
tableCreate(name, fields, { charset = 'utf8mb4', engine = 'InnoDB' }) {
|
||||
if (!name) {
|
||||
return Promise.reject('Empty database name.')
|
||||
}
|
||||
|
|
12
lib/utils.js
12
lib/utils.js
|
@ -229,7 +229,7 @@ const parser = {
|
|||
let defaultVal = ''
|
||||
// 只处理1个主键, 其他的忽略, 且作为主键,必须 NOT NULL
|
||||
if (!primary && it.primary) {
|
||||
primary = `PRIMARY KEY (\`${it.name}\`),\n`
|
||||
primary = `PRIMARY KEY (\`${it.name}\`)`
|
||||
it.notnull = true
|
||||
if (it.inc) {
|
||||
inc = 'AUTO_INCREMENT'
|
||||
|
@ -272,15 +272,17 @@ const parser = {
|
|||
indexes.push(idx)
|
||||
}
|
||||
}
|
||||
sql += `\`${it.name}\` ${
|
||||
it.type
|
||||
} ${notnull} ${defaultVal} ${inc} ${autoUpdate},\n`
|
||||
sql += `\`${it.name}\` ${it.type} ${notnull} ${defaultVal} ${inc} ${autoUpdate},\n`
|
||||
}
|
||||
if (!primary) {
|
||||
throw new Error('Can not create table without primary key.')
|
||||
}
|
||||
sql += primary
|
||||
sql += indexes.join(', \n') + ')'
|
||||
if (indexes.length) {
|
||||
sql += indexes.join(', \n') + ')'
|
||||
} else {
|
||||
sql += '\n)'
|
||||
}
|
||||
return sql
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "mysqli",
|
||||
"version": "3.0.6",
|
||||
"version": "3.0.7",
|
||||
"description": "MySQL tool",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
|
|
Loading…
Reference in New Issue