Node.jsからHeroku Postgresを利用する方法
Node.jsを用いて、HerokuのPostgresにアクセス、SQL実行する方法を説明する。
前提条件:Heroku Postgresテーブル作成・確認方法まで完了していること。
1 . DB接続情報を定義する。
configファイルに下記のようなDB接続情報を定義しておく
{ "db": { "postgres": { "host": "ホスト", "user": "ユーザ名", "password": "パスワード", "port": ポート番号, "database":"データベース名" } } }
2 . プロジェクトにpostgresのライブラリ(pg)をインストールする。
npm(node パッケージ 管理ツール)を利用してインストールする。
$ npm install pg
3 . SQLを実行したいファイル内でpgライブラリを読み込む。
const pg = require('pg'); const config = require('config'); // 先ほど定義したDB接続情報 const pool = new pg.Pool(config.db.postgres); // プールで接続する(必須くさい)
4 . pgを利用してSQLを実行する。
・SELECTで1件のみ取得(引数にSQLとそのパラメータを渡す)
exports.getOne= function(query, param, callback) { pool.connect(function(err, client, done) { client.query(query, param, function(err, result) { done(); if(err) { callback(err); } else { console.log(sql: " + query + ", param: " + param); callback(null, (result == null || result.rows.length < 1) ? null : result.rows[0]); } }); }); }
・INSERTでレコード追加(引数にSQLとそのパラメータを渡す)
exports.insert= function(query, param, callback) { pool.connect(function(err, client, done) { client.query(query, param, function(err, result) { done(); if(err) { callback(err); } else { console.log("sql: " + query + ", param: " + param + ", count:" + result.rowCount); callback(null, result); } }); }); }
的な感じで実行していく。
(今回はしてないが、プールの取り回しは必要な時に返却・破棄するようにしていく)
上記がherokuのDB(postgres)に対してSQL実行をしていく方法である。
複雑なものではないが、pg自体のバージョンで実行方法が結構変わってたりするので
注意が必要。(ネットに落ちてるやり方が必ずしもできるとは限らない)
今回使用したpgのバージョンはv7.4.3である。
サンプル:https://github.com/ebipan/LineBotSampleProject
こちらの記事もどうぞ
Node.jsからHeroku Postgresを利用する方法
PostgreSQLでよく使うコマンド一覧