アプリケーション開発ポータルサイト
ServerNote.NET
ServerNote.NET厳選キャンペーン・クーポンはこちら!
カテゴリー【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から行う

何枚刷っても0円!定額制フルカラー印刷機レンタルサービス【スリホ】
■【スリホとは?】 月々15,800円〜からご利用頂けるフルカラー・モノクロ印刷し放題のプリンタレンタルサー...READ MORE
【電話成果対応】24時間365日全国対応の【原一探偵事務所】
46年の調査実績と年間50,000件のご相談件数! 探偵業界最大手の原一探偵事務所です。 積み重ねてきた実績と...READ MORE
【ビハクシア】13個の効果効能を実現 -1980円(税込) -でお得にお試し
\元サッカー選手"丸山桂里奈さん"愛用/ 薬用クリーム『ビハクシア』で、肌悩みにアプローチ シミができる...READ MORE
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【webmaster/管理人】
自営業プログラマー
ご連絡は以下アドレスまで★

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