一个MYSQL数据库的常用操作封装,使用连续点操作,实现语义化的数据库操作。
安装
npm i yamlling-node-mysql
使用
基础操作
const mysql = require('yamlling-node-mysql');
const inst = new mysql({
host: '127.0.0.1',
user: 'root',
password: '',
database: 'test-db',
port: 3306,
});
const users = await inst.table('user').where({ status: 1 }).select();
console.log(users);
更多操作方式
见下方[API]
API
Mysql数据库实例,封装了常用操作方式
new Mysql(config)
创建Mysql实例
Param | Type | Description |
---|
config | object | 数据库连接配置 |
mysql.query(sql) ⇒ Promise.<any>
直接执行sql语句
Kind: instance method of Mysql
Returns: Promise.<any>
- sql执行结果
Param | Type | Description |
---|
sql | string | sql语句 |
mysql.table(tableName) ⇒ Mysql
设置表名
Kind: instance method of Mysql
Returns: Mysql
- 实例
Param | Type | Description |
---|
tableName | string | 表名 |
mysql.alias(tableAlias) ⇒ Mysql
设置表的别名
Kind: instance method of Mysql
Returns: Mysql
- 实例
Param | Type | Description |
---|
tableAlias | string | 主表别名 |
mysql.field(fields) ⇒ Mysql
设置需要选取的字段,字符串或数组格式
Kind: instance method of Mysql
Returns: Mysql
- 实例
Param | Type | Description |
---|
fields | string | Array | 需要选取的字段 |
Example
mysql.table('admins').field('id, name').find();
mysql.table('admins').field(['id', 'name as a', { status: 'b' }]).find();
mysql.group(columns) ⇒ Mysql
group by 操作
Kind: instance method of Mysql
Returns: Mysql
- 实例
Param | Type | Description |
---|
columns | Array | string | 分组列名,可为数组或字符串,字符串以逗号分隔 |
mysql.where(where) ⇒ Mysql
where条件设置,接受字符串或者对象形式,可以多次调用,每次调用都作为一个整体,多次调用使用 AND 连接
Kind: instance method of Mysql
Returns: Mysql
- 实例
Param | Type | Description |
---|
where | object | string | where条件 |
Example
mysql.table('admins').where({ status: 'on' }).find();
mysql.table('admins').where('id = 10 OR id < 2').find();
mysql.table('admins').where({id: ['!=', 1]}).find();
SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`id` IS NULL) limit 1
mysql.table('admins').where({id: null}).find();
mysql.table('admins').where({id: [ '!=', null ]}).find();
mysql.table('admins').where({name: [ 'like', '%admin%' ]}).find();
mysql.table('admins').where({name: [ 'notlike', '%admin%' ]}).find();
mysql.table('admins').where({'name|email': [ 'like', '%admin%' ]}).find();
mysql.table('admins').where({'name&email': [ 'like', '%admin%' ]}).find();
mysql.table('admins').where({name: [ '=', [ 'admin', 'editor' ] ]}).find();
mysql.table('admins').where({'id': [ 'in', [5, 10] ]}).find();
mysql.table('admins').where({'id': [ 'in', '5, 10' ]}).find();
mysql.table('admins').where({'id': [ 'notin', [5, 10] ]}).find();
mysql.table('admins').where({'id': [ 'between', [5, 10] ]}).find();
mysql.table('admins').where({'id': [ 'between', [5, 10] ], 'name': 'admin'}).find();
mysql.table('admins').where({'id': [ 'between', [5, 10] ], 'name': 'admin', '_logic': 'OR'}).find();
mysql.table('admins').where({'status': 'on'}).where({'id': {'>=': 1, '<=': 10}}).find();
mysql.table('admins').where({'status': 'on'}).where({'id': {'>=': 1, '<=': 10, '_logic': 'OR'}}).find();
mysql.limit(limit) ⇒ Mysql
设置结果的条数限制
Kind: instance method of Mysql
Returns: Mysql
- 实例
Param | Type | Description |
---|
limit | number | 结果的条数限制 |
mysql.page(page, pageSize) ⇒ Mysql
分页操作
total 总记录数
list 结果集
pageNum 第几页
pageSize 每页记录数
pages 总页数
size 当前页的数量
Kind: instance method of Mysql
Returns: Mysql
- 实例
Param | Type | Default | Description |
---|
page | number | 1 | 当前页数 |
pageSize | number | 1 | 每页大小 |
mysql.data(data) ⇒ Mysql
设置数据
Kind: instance method of Mysql
Returns: Mysql
- 实例
Param | Type | Description |
---|
data | object | 数据 |
mysql.order(order) ⇒ Mysql
排序
Kind: instance method of Mysql
Returns: Mysql
- 实例
Param | Type | Description |
---|
order | array | string | 排序 |
Example
mysql.table('article_categorys').order('id desc').select();
mysql.table('article_categorys').order([ 'id desc', 'name asc' ]).select();
mysql.join(join) ⇒ Mysql
设置join条件,可以多次join
Kind: instance method of Mysql
Returns: Mysql
- 实例
Param | Type | Description |
---|
join | object | join条件 |
Example
mysql.table('article_posts').alias('a').field([ 'a.*', 'b.*' ]).join({
article_categorys: {
as: 'b',
on: { category_id: 'id' }
}
}).find();
mysql.table('article_posts').alias('a').field([ 'a.*', 'article_categorys.*' ]).join({
article_categorys: {
on: { category_id: 'id' }
}
}).find();
mysql.find(where) ⇒ Promise.<any>
查找一条数据
Kind: instance method of Mysql
Returns: Promise.<any>
- 查询结果
Param | Type | Default | Description |
---|
where | object | string |
| where条件 |
mysql.select(where) ⇒ Promise.<any>
查找数据
Kind: instance method of Mysql
Returns: Promise.<any>
- 查询结果
Param | Type | Default | Description |
---|
where | object | string |
| where条件 |
mysql.update(column, where) ⇒ Promise.<any>
更新操作
Kind: instance method of Mysql
Returns: Promise.<any>
- 更新结果
Param | Type | Default | Description |
---|
column | object | | {name: value} 更新的字段与值 |
where | object | string |
| where条件,参见[where]方法 |
mysql.updateMany(columnList, where) ⇒ Promise.<any>
一次性更新多条数据
Kind: instance method of Mysql
Returns: Promise.<any>
- 更新结果
Param | Type | Description |
---|
columnList | Array.<object> | [{id: 1, name: value}] 更新的字段与值,必须包含主键 |
where | object | string | where条件,参见[where]方法 |
mysql.increase(field, step) ⇒ Promise.<any>
自增操作
Kind: instance method of Mysql
Returns: Promise.<any>
- 更新结果
Param | Type | Default | Description |
---|
field | string | | 字段名 |
step | number | 1 | 自增数,默认1 |
mysql.decrement(field, step) ⇒ Promise.<any>
自减操作
Kind: instance method of Mysql
Returns: Promise.<any>
- 更新结果
Param | Type | Default | Description |
---|
field | string | | 字段名 |
step | number | 1 | 自减数,默认1 |
mysql.add(column, duplicate) ⇒ Promise.<any>
新增数据
Kind: instance method of Mysql
Returns: Promise.<any>
- 操作结果
Param | Type | Default | Description |
---|
column | object | | 字段键值对 |
duplicate | object | false | 出现重复则更新,{id : 100, name : VALUES('test')} |
mysql.addMany(columnList, duplicate) ⇒ Promise.<any>
批量新增数据
Kind: instance method of Mysql
Returns: Promise.<any>
- 操作结果
Param | Type | Default | Description |
---|
columnList | object | | 字段键值对数组 |
duplicate | object | false | 出现重复则更新,{id : 100, name : VALUES('test')} |
mysql.delete(where) ⇒ Promise.<any>
删除操作,彻底删除一条数据,一般不建议删除数据,可以通过字段开关控制
Kind: instance method of Mysql
Returns: Promise.<any>
- 操作结果
Param | Type | Description |
---|
where | object | string | where条件,参见[where]方法 |
mysql._sql() ⇒ string
打印生成的sql语句,用于调试
Kind: instance method of Mysql
Returns: string
- 生成的sql语句