造轮子 - EGGJS的MySQL操纵库

近来进修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.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对象了,接下来就能够随处链式操纵了。

推行

@hyoga/egg-mysql依赖于@hyoga/mysql,项目地点以下,迎接star,迎接issue

    原文作者:越小皓
    原文地址: https://segmentfault.com/a/1190000019193012
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞