xModel
一个极简的
node-mysql
模型类
Features
Promise
化,告别回调地狱- 简洁的api,支持链式调用
todo
- 格式化数据,如时间戳,数据分组等
- 事务处理
- 目前只支持连接单个数据库
bug
- 异步导致
sql
属性返回值错乱,需要进行调试
Step
npm i mysql-xmodel -S
let Model = ; // 创建连接池Model; // 实例化模型let admin = "shymean_admin";
API
sql
使用sql
属性获得上一次操作的SQL
语句
admin
query
执行原始SQL语句
admin.query(sql, values).then(res=>{
// result
})
where
where(key, logic, value)
用来配置WHERE
子句,当逻辑操作符是=
时可省略
where("id", 1) // WHERE id = 1
where("id", ">", 1) // WHERE id > 1
如果存在多个条件子句,须调用andWhere(key, logic, value)
或orWhere(key, logic, value)
andWhere(name, "root"); // AND name = 'root'
orWhere(id, "<", 10); // OR id < 10
调用顺序决定了条件的排列顺序。
select
select(field)
用来执行SELECT
操作,field
参数为需要获取的字段数组,默认为["*""]
,该方法返回查询结果
admin; admin;
distinct
对应DISTINCT
,去除重复结果
admin.distinct().select()
alias
为模型表设置别名,用于联结查询
admin.alias("a"); // shymean_admin AS a
join
join(table, key, logic, value)
联结查询:
table
为需要联结的表名,如果需要设置别名则直接传入key, logic, value
后续三个参数对应where
方法参数,用于设置联结条件,同上logic = '='
时可不传
article ;
leftJoin(table, key, logic, value)
和rightJoin(table, key, logic, value)
参数同上,分别对应左联结和右联结
groupBy
groupBy(field)
用于设置分组
having
having(key, logic, value)
用于设置分组筛选
orderBy
orderBy(field, logic = "DESC")
,用于设置排序,多个排序条件可链式调用
admin.orderBy("name").orderBy("id").select()
limit
limit(num)
限制输出个数
offset
offset(num)
,跟limit(num)
同时使用,用于指定偏移量
insert
insert(value)
用来执行INSERT
操作,value
参数为一个JSON
对象,该方法返回insertId
admin;
update
update(value)
用来执行UPDATE
操作,value
参数为一个JSON
对象,该方法返回changedRows
。
需要的注意的是为了防止误操作,必须在调用update()
之前调用where()
admin;
delete
delete()
用来执行DELETE
操作,该方法返回affectedRows
,同上,必须在调用delete()
之前调用where()
admin;
聚集函数
提供了相关聚集函数的快捷方式
count()
,返回行数max(field)
,返回对应字段最大值min(field)
,返回对应字段最小值avg(field)
,返回平均值sum(field)
,求和