1.0.3 • Published 3 years ago

yamlling-node-mysql v1.0.3

Weekly downloads
17
License
MIT
Repository
-
Last release
3 years ago

NPM version npm download

一个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实例

ParamTypeDescription
configobject数据库连接配置

mysql.query(sql) ⇒ Promise.<any>

直接执行sql语句

Kind: instance method of Mysql
Returns: Promise.<any> - sql执行结果

ParamTypeDescription
sqlstringsql语句

mysql.table(tableName) ⇒ Mysql

设置表名

Kind: instance method of Mysql
Returns: Mysql - 实例

ParamTypeDescription
tableNamestring表名

mysql.alias(tableAlias) ⇒ Mysql

设置表的别名

Kind: instance method of Mysql
Returns: Mysql - 实例

ParamTypeDescription
tableAliasstring主表别名

mysql.field(fields) ⇒ Mysql

设置需要选取的字段,字符串或数组格式

Kind: instance method of Mysql
Returns: Mysql - 实例

ParamTypeDescription
fieldsstring | Array需要选取的字段

Example

// SELECT `admins`.`id`, `admins`.`name` FROM `admins` limit 1
mysql.table('admins').field('id, name').find();
// SELECT `admins`.`id`, `admins`.`name` as a, `admins`.`status` as b FROM `admins` limit 1
mysql.table('admins').field(['id', 'name as a', { status: 'b' }]).find();

mysql.group(columns) ⇒ Mysql

group by 操作

Kind: instance method of Mysql
Returns: Mysql - 实例

ParamTypeDescription
columnsArray | string分组列名,可为数组或字符串,字符串以逗号分隔

mysql.where(where) ⇒ Mysql

where条件设置,接受字符串或者对象形式,可以多次调用,每次调用都作为一个整体,多次调用使用 AND 连接

Kind: instance method of Mysql
Returns: Mysql - 实例

ParamTypeDescription
whereobject | stringwhere条件

Example

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`status` = 'on') limit 1
mysql.table('admins').where({ status: 'on' }).find();

// SELECT `admins`.`*` FROM `admins` WHERE (id = 10 OR id < 2) limit 1
mysql.table('admins').where('id = 10 OR id < 2').find();

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`id` != 1) limit 1
mysql.table('admins').where({id: ['!=', 1]}).find();

// NULL操作

SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`id` IS NULL) limit 1
mysql.table('admins').where({id: null}).find();

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`id` IS NOT NULL) limit 1
mysql.table('admins').where({id: [ '!=', null ]}).find();

// LIKE 操作

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`name` LIKE '%admin%') limit 1
mysql.table('admins').where({name: [ 'like', '%admin%' ]}).find();

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`name` NOT LIKE '%admin%') limit 1
mysql.table('admins').where({name: [ 'notlike', '%admin%' ]}).find();

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`name` LIKE '%admin%' OR `admins`.`email` LIKE '%admin%') limit 1
mysql.table('admins').where({'name|email': [ 'like', '%admin%' ]}).find();

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`name` LIKE '%admin%' AND `admins`.`email` LIKE '%admin%') limit 1
mysql.table('admins').where({'name&email': [ 'like', '%admin%' ]}).find();

// 一对多操作
// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`name` = 'admin' OR `admins`.`name` = 'editor') limit 1
mysql.table('admins').where({name: [ '=', [ 'admin', 'editor' ] ]}).find();

// IN 操作
// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`id` IN (5,10)) limit 1
mysql.table('admins').where({'id': [ 'in', [5, 10] ]}).find();

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`id` IN (5, 10)) limit 1
mysql.table('admins').where({'id': [ 'in', '5, 10' ]}).find();

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`id` NOT IN (5,10)) limit 1
mysql.table('admins').where({'id': [ 'notin', [5, 10] ]}).find();

// BETWEEN 操作
// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`id` BETWEEN 5 AND 10) limit 1
mysql.table('admins').where({'id': [ 'between', [5, 10] ]}).find();

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`id` BETWEEN 5 AND 10 AND `admins`.`name` = 'admin') limit 1
mysql.table('admins').where({'id': [ 'between', [5, 10] ], 'name': 'admin'}).find();

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`id` BETWEEN 5 AND 10 OR `admins`.`name` = 'admin') limit 1 
mysql.table('admins').where({'id': [ 'between', [5, 10] ], 'name': 'admin', '_logic': 'OR'}).find();

// 多字段操作
// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`status` = 'on') AND (`admins`.`id` >= 1 AND `admins`.`id` <= 10) limit 1
mysql.table('admins').where({'status': 'on'}).where({'id': {'>=': 1, '<=': 10}}).find();

// SELECT `admins`.`*` FROM `admins` WHERE (`admins`.`status` = 'on') AND (`admins`.`id` >= 1 OR `admins`.`id` <= 10) limit 1
mysql.table('admins').where({'status': 'on'}).where({'id': {'>=': 1, '<=': 10, '_logic': 'OR'}}).find();

mysql.limit(limit) ⇒ Mysql

设置结果的条数限制

Kind: instance method of Mysql
Returns: Mysql - 实例

ParamTypeDescription
limitnumber结果的条数限制

mysql.page(page, pageSize) ⇒ Mysql

分页操作 total 总记录数 list 结果集 pageNum 第几页 pageSize 每页记录数 pages 总页数 size 当前页的数量

Kind: instance method of Mysql
Returns: Mysql - 实例

ParamTypeDefaultDescription
pagenumber1当前页数
pageSizenumber1每页大小

mysql.data(data) ⇒ Mysql

设置数据

Kind: instance method of Mysql
Returns: Mysql - 实例

ParamTypeDescription
dataobject数据

mysql.order(order) ⇒ Mysql

排序

Kind: instance method of Mysql
Returns: Mysql - 实例

ParamTypeDescription
orderarray | string排序

Example

// SELECT `article_categorys`.`*` FROM `article_categorys` ORDER BY id desc
mysql.table('article_categorys').order('id desc').select();

//SELECT `article_categorys`.`*` FROM `article_categorys` ORDER BY id desc, name asc
mysql.table('article_categorys').order([ 'id desc', 'name asc' ]).select();

mysql.join(join) ⇒ Mysql

设置join条件,可以多次join

Kind: instance method of Mysql
Returns: Mysql - 实例

ParamTypeDescription
joinobjectjoin条件

Example

// SELECT `a`.`*`, `b`.`*` FROM `article_posts` as a LEFT JOIN `article_categorys` AS b ON (a.`category_id`=b.`id`) limit 1
mysql.table('article_posts').alias('a').field([ 'a.*', 'b.*' ]).join({
 article_categorys: {
   as: 'b',
   on: { category_id: 'id' }
 }
}).find();

// SELECT `a`.`*`, `article_categorys`.`*` FROM `article_posts` as a LEFT JOIN `article_categorys` ON (a.`category_id`=article_categorys.`id`) limit 1
mysql.table('article_posts').alias('a').field([ 'a.*', 'article_categorys.*' ]).join({
 article_categorys: {
   // as: 'b',
   on: { category_id: 'id' }
 }
}).find();

mysql.find(where) ⇒ Promise.<any>

查找一条数据

Kind: instance method of Mysql
Returns: Promise.<any> - 查询结果

ParamTypeDefaultDescription
whereobject | stringwhere条件

mysql.select(where) ⇒ Promise.<any>

查找数据

Kind: instance method of Mysql
Returns: Promise.<any> - 查询结果

ParamTypeDefaultDescription
whereobject | stringwhere条件

mysql.update(column, where) ⇒ Promise.<any>

更新操作

Kind: instance method of Mysql
Returns: Promise.<any> - 更新结果

ParamTypeDefaultDescription
columnobject{name: value} 更新的字段与值
whereobject | stringwhere条件,参见where方法

mysql.updateMany(columnList, where) ⇒ Promise.<any>

一次性更新多条数据

Kind: instance method of Mysql
Returns: Promise.<any> - 更新结果

ParamTypeDescription
columnListArray.<object>{id: 1, name: value} 更新的字段与值,必须包含主键
whereobject | stringwhere条件,参见where方法

mysql.increase(field, step) ⇒ Promise.<any>

自增操作

Kind: instance method of Mysql
Returns: Promise.<any> - 更新结果

ParamTypeDefaultDescription
fieldstring字段名
stepnumber1自增数,默认1

mysql.decrement(field, step) ⇒ Promise.<any>

自减操作

Kind: instance method of Mysql
Returns: Promise.<any> - 更新结果

ParamTypeDefaultDescription
fieldstring字段名
stepnumber1自减数,默认1

mysql.add(column, duplicate) ⇒ Promise.<any>

新增数据

Kind: instance method of Mysql
Returns: Promise.<any> - 操作结果

ParamTypeDefaultDescription
columnobject字段键值对
duplicateobjectfalse出现重复则更新,{id : 100, name : VALUES('test')}

mysql.addMany(columnList, duplicate) ⇒ Promise.<any>

批量新增数据

Kind: instance method of Mysql
Returns: Promise.<any> - 操作结果

ParamTypeDefaultDescription
columnListobject字段键值对数组
duplicateobjectfalse出现重复则更新,{id : 100, name : VALUES('test')}

mysql.delete(where) ⇒ Promise.<any>

删除操作,彻底删除一条数据,一般不建议删除数据,可以通过字段开关控制

Kind: instance method of Mysql
Returns: Promise.<any> - 操作结果

ParamTypeDescription
whereobject | stringwhere条件,参见where方法

mysql._sql() ⇒ string

打印生成的sql语句,用于调试

Kind: instance method of Mysql
Returns: string - 生成的sql语句