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