造輪子 - EGGJS的MySQL操做庫

最近學習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數據庫

相關文章
相關標籤/搜索