- 网站:访问项目github地址
- 介绍:一直以来很喜欢Thinkphp的数据操作风格,所以在nodejs上也封装了一个MYSQL数据库的常用操作,支持链式调用,实现语义化的数据库操作。
// npm安装
npm i h-mysql --save
// yarn安装
yarn add h-mysql
const hMysql = require('h-mysql');
const hMysql = new mysql({
host: '127.0.0.1',
user: 'root',
password: '',
database: 'test-db',
port: 3306,
acquireTimeout: 1000,
waitForConnections: true, //是否等待链接
connectionLimit: 10, // 连接池数
queueLimit: 0, // 排队限制
defaultSqlPre: '',
isPool: true,
isDebug: true
});
const {error, result} = await hMysql.table('user')
.where({ id: 100 })
.select()
.execSql();
console.log(result);
规则:调用方法跟顺序无关
let hMysql = new hMysql(config)
hMysql.table()
.where()
.limit()
.select()
.execSql()
- 添加:[insert] [table] [data]
- 查询:[select] [field] from [table] [alias] [where] [join]
- 更新:[update] [table] set [data] [where]
- 删除:[delete] from [table] [where]
-
CURD操作
- .find() ⇒ Promise
- .select() ⇒ Promise
- .update() ⇒ Promise
- .updateMany() ⇒ Promise
- .insert() ⇒ Promise
- .delete() ⇒ Promise
- .query(sql: string) ⇒ Promise
-
链式方法
- .table(tableName: string) ⇒ Mysql
- .alias(tableAlias: string)⇒ Mysql
- .field(opt: string | any[]) ⇒ Mysql
- .where(opt: string | any[]) ⇒ Mysql
- .limit(limit) ⇒ Mysql
- .page(pageSize, pageNum) ⇒ Mysql
- .data(data:object) ⇒ Mysql
- .order(order) ⇒ Mysql
- .join() ⇒ Mysql
- .union() ⇒ Mysql
- .count() ⇒ Promise
- .group(field) ⇒ Mysql
- .having(field) ⇒ Mysql
- .count(field) ⇒ Mysql
- .max(field) ⇒ Mysql
- .min(field) ⇒ Mysql
- .avg(field) ⇒ Mysql
- .sum(field) ⇒ Mysql
- .lock(field, step) ⇒ Promise
- .distinct(field, step) ⇒ Promise
- .comment(str:string) ⇒ Promise
- .execSql() ⇒ string
- 完善API文档、架构文档
- 完善案例
- 批量插入、批量更新、批量删除
- 支持更复杂的链式操作
- 添加测试用例
- 重写异常处理方式
- 添加性能测试、性能优化并添加每条语句执行的时间
- 添加安全测试,防注入
- 增加对数据库的操作(现在的功能都是针对表)
- 考虑是不是要支持ORM
- v1.0.0
- 实现常用方法的链式调用,未经过测试,慎用到生产环境,待更新到完善
欢迎大家到 Issues 交流或通过提交PR的形式对本项目进行贡献