アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【Node.jsJavaScriptPostgreSQL
Node.jsからPostgreSQLサーバに接続・操作する
POSTED BY
2023-01-11

最新では呼び出し方が少し変わっているようなので、以下サンプルを書き直しました。

PostgreSQLモジュールのインストール

npm install pg

サンプルソース

JavaScriptpg-sample.jsGitHub Source
//PostgreSQL接続サンプル
async function main() {

const UTIL = require('util');

const PG = require('pg');

const POOL = new PG.Pool({ //接続パラメータを指定してPoolを生成する
  host: '127.0.0.1',
  port: 5432,
  database: 'testdb',
  user: 'testuser',
  password: 'testpass'
});

POOL.connect( async (err, client) => { //接続

  if (err) {
    console.log(err);
    return; //エラー終了
  }

  try {
    var query = "DROP TABLE IF EXISTS testtbl"; //既存テーブル消去
    console.log(query);
    var result = await client.query(query);

    query = "CREATE TABLE testtbl (key VARCHAR(512) PRIMARY KEY, value TEXT NOT NULL)"; //新規テーブル作成
    console.log(query);
    result = await client.query(query);

    query = "INSERT INTO testtbl (key, value) VALUES ('きー1', 'ばりゅー1')"; //データ投入
    console.log(query);
    result = await client.query(query);

    query = "INSERT INTO testtbl (key, value) VALUES ('きー2', 'ばりゅー2')"; //データ投入
    console.log(query);
    result = await client.query(query);

    query = UTIL.format("SELECT value FROM testtbl WHERE key = '%s'", 'きー2'); //2番目のデータを抽出
    console.log(query);
    result = await client.query(query);
    console.log(result.rows);    
    if(result.rows.length > 0) {
      console.log(result.rows[0].value);
    }
  }
  catch (err) {
    console.log(err.stack); //エラー
  }

  client.release(true); //これを忘れるとサーバにずっとコネクションが溜まる

});

} //async function main()

main();

実行結果

node pg-sample.js

DROP TABLE IF EXISTS testtbl
CREATE TABLE testtbl (key VARCHAR(512) PRIMARY KEY, value TEXT NOT NULL)
INSERT INTO testtbl (key, value) VALUES ('きー1', 'ばりゅー1')
INSERT INTO testtbl (key, value) VALUES ('きー2', 'ばりゅー2')
SELECT value FROM testtbl WHERE key = 'きー2'
[ { value: 'ばりゅー2' } ]
ばりゅー2

pgモジュールでpoolを生成してからconnect、releaseするのがポイントです。
テーブルやデータの生成を待ってから抽出するので全部async&awaitで同期的にやっていますが、Node.jsらしく非同期で行うなら

client.query(query, (err, result) => {
    if (err) {
        console.log(err.stack);
    } else {
        console.log(result.rows);
    }
});

などと書いていくことになります。ネストがすごいことになりますが…。

【関連記事】
PostgreSQLでGEOGRAPHY検索をNode.jsから行う

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】