Bot開発でNode.jsを使うことが多く、DBアクセスがある要件で pg
などで素のクエリを書いていて辛いなーと感じている時に、 knex
に出会ったので紹介します。
公式ドキュメント http://knexjs.org/
GitHub https://github.com/knex/knex
使い方
インストール
$ npm install --save knex pg
knex初期設定
$ knex init
すると、以下のファイルが自動生成されます。
knexfile.js
// Update with your config settings.
module.exports = {
development: {
client: 'postgresql',
connection: {
database: 'linebot-dev',
user: 'zyyx-kubo',
password: ''
},
pool: {
min: 2,
max: 10
},
migrations: {
directory:'./db/migrations',
tableName: 'knex_migrations'
}
},
staging: {
client: 'postgresql',
connection: {
database: 'my_db',
user: 'username',
password: 'password'
},
pool: {
min: 2,
max: 10
},
migrations: {
directory:'./db/migrations',
tableName: 'knex_migrations'
}
},
production: {
client: 'postgresql',
connection: {
database: 'my_db',
user: 'username',
password: 'password'
},
pool: {
min: 2,
max: 10
},
migrations: {
directory:'./db/migrations',
tableName: 'knex_migrations'
}
}
};
マイグレーションファイルの作成
$ knex migrate:make create_user
Using environment: development
Created Migration: ./db/migrations/20190214205707_create_user.js
マイグレーション
実行
$ knex migrate:latest
ロールバック
$ knex migrate:rollback
シード
ファイル作成
$ knex seed:make test_users
Using environment: development
Created seed file: ./db/seeds/test_users.js
実行
$ knex seed:run
Herokuでの実行
$ heroku run knex migrate:latest --app app-name