最近学习eggjs,学习过程当中使用官方推荐的MySQL库,感受官方库不太好用,基础的CURD没问题。可是复杂点的操做就不行了,虽然官方还有一个egg-sequelize
,可是这个这并不妨碍我造轮子。下面介绍一下个人这个轮子。javascript
这个轮子实际上是很早之前就造好的,主要参考THINKPHP
的数据库操做方式。将设置表名(table)、设置查询字段(field)、联表(join)等操做进行链式操做,给人一种语义化操做数据库的感受。 java
好比从用户表查找id
为1的用户的名字,则只须要这样操做:mysql
mysql.table('user').field('name').where({ id: 1 }).find(); // SELECT name FROM user where id=1 limit 1
是否是很简单呢?git
造的轮子名字叫@hyoga/egg-mysql
,因此只须要:github
npm i @hyoga/egg-mysql --save
// {app_root}/config/config.default.js exports.mysql = { mysql: { client: { host: '127.0.0.1', port: '3306', user: 'root', password: '', database: 'db', }, // 是否加载到 app 上,默认开启 app: true, // 是否加载到 agent 上,默认关闭 agent: false, }, };
// {app_root}/config/plugin.js exports.mysql = { enable: true, package: '@hyoga/egg-mysql', }; // {app_root}/app/service/user.js export default class User extends Service { private table = 'user'; public async list() { // sql = SELECT * FROM user WHERE status = 1 return this.app.mysql.table(this.table).where({ status: 1 }).select(); } }
这时候mysql就挂载到egg的app对象了,接下来就能够处处链式操做了。sql
@hyoga/egg-mysql
依赖于@hyoga/mysql
,项目地址以下,欢迎star,欢迎issue:数据库