最近学习eggjs,学习过程中使用官方推荐的MySQL库,感觉官方库不太好用,基础的CURD没问题。但是复杂点的操作就不行了,虽然官方还有一个egg-sequelize,但是这个这并不妨碍我造轮子。下面介绍一下我的这个轮子。

介绍

这个轮子其实是很早以前就造好的,主要参考THINKPHP的数据库操作方式。将设置表名(table)、设置查询字段(field)、联表(join)等操作进行链式操作,给人一种语义化操作数据库的感觉。

比如从用户表查找id为1的用户的名字,则只需要这样操作:

mysql.table('user').field('name').where({ id: 1 }).find();// SELECT name FROM user where id=1 limit 1

是不是很简单呢?

造的轮子名字叫@hyoga/egg-mysql,所以只需要:

安装

npm i @hyoga/egg-mysql --save

配置

// {app_root}/config/config.default.jsexports.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.jsexports.mysql = {  enable: true,  package: '@hyoga/egg-mysql',};// {app_root}/app/service/user.jsexport 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对象了,接下来就可以到处链式操作了。

推广

@hyoga/egg-mysql依赖于@hyoga/mysql,项目地址如下,欢迎star,欢迎issue:

  • hyoga-egg-mysql
  • hyoga-mysql