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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください