【Node.js + PostgreSQL】データベース操作をもっと便利に! 高度な接続方法

2024-04-15

Node.js で PostgreSQL に接続する方法

必要なもの

  • Node.js がインストールされていること
  • PostgreSQL データベースが起動していること
  • pg モジュール

手順

  1. pg モジュールをインストールします。
npm install pg
  1. 以下のコードを使用して、PostgreSQL データベースに接続します。
const { Client } = require('pg');

const client = new Client({
  user: 'postgres',
  host: 'localhost',
  database: 'mydb',
  password: 'mypassword',
  port: 5432
});

client.connect((err) => {
  if (err) {
    console.error('接続エラー:', err.stack);
    return;
  }

  console.log('PostgreSQL データベースに接続しました。');

  // データベース操作を実行
  // ...

  client.end(() => {
    console.log('PostgreSQL データベースとの接続を切断しました。');
  });
});

説明

  • const { Client } = require('pg');: pg モジュールから Client クラスをインポートします。
  • const client = new Client({ ... });: Client クラスの新しいインスタンスを作成し、接続オプションを設定します。
    • user: PostgreSQL サーバーへのログインユーザー名
    • host: PostgreSQL サーバーのホスト名 (通常は localhost)
    • database: 接続するデータベースの名前
  • client.connect((err) => { ... });: PostgreSQL データベースに接続します。
    • err: 接続エラーが発生した場合に渡されるエラーオブジェクト
  • if (err) { ... }: 接続エラーが発生した場合の処理
  • console.log('PostgreSQL データベースに接続しました。');: 接続成功時にコンソールにメッセージを出力します。
  • // データベース操作を実行: ここで、INSERT、SELECT、UPDATE、DELETE などの SQL クエリを実行できます。
  • client.end(() => { ... });: PostgreSQL データベースとの接続を切断します。



PostgreSQL に接続する Node.js サンプルコード

const { Client } = require('pg');

const client = new Client({
  user: 'postgres',
  host: 'localhost',
  database: 'mydb',
  password: 'mypassword',
  port: 5432
});

client.connect((err) => {
  if (err) {
    console.error('接続エラー:', err.stack);
    return;
  }

  console.log('PostgreSQL データベースに接続しました。');

  // データベース操作

  // 1. 新しいユーザーを作成する
  client.query('INSERT INTO users (name, email) VALUES ($1, $2)', ['taro', '[email protected]'], (err, res) => {
    if (err) {
      console.error('ユーザー作成エラー:', err.stack);
      return;
    }

    console.log('ユーザーを作成しました:', res.rowCount);
  });

  // 2. すべてのユーザーを取得する
  client.query('SELECT * FROM users', (err, res) => {
    if (err) {
      console.error('ユーザー取得エラー:', err.stack);
      return;
    }

    console.log('ユーザー一覧:', res.rows);
  });

  // 3. 特定のユーザーを更新する
  client.query('UPDATE users SET name = $1 WHERE id = $2', ['Tanaka Taro', 1], (err, res) => {
    if (err) {
      console.error('ユーザー更新エラー:', err.stack);
      return;
    }

    console.log('ユーザーを更新しました:', res.rowCount);
  });

  // 4. 特定のユーザーを削除する
  client.query('DELETE FROM users WHERE id = $1', [1], (err, res) => {
    if (err) {
      console.error('ユーザー削除エラー:', err.stack);
      return;
    }

    console.log('ユーザーを削除しました:', res.rowCount);
  });

  client.end(() => {
    console.log('PostgreSQL データベースとの接続を切断しました。');
  });
});
  • 接続オプションは、userhostdatabasepasswordport などのプロパティを使用して設定します。
  • client.connect() メソッドを使用して、データベースへの接続を確立します。
  • 接続が成功すると、client.query() メソッドを使用して SQL クエリを実行できます。
  • クエリが完了すると、コールバック関数が呼び出され、結果が渡されます。

注意事項

  • このコードはあくまで例であり、本番環境で使用するにはセキュリティ対策やエラー処理などを追加する必要があります。
  • 実際のデータベース操作は、ご自身のアプリケーションに合わせて変更してください。



Node.js で PostgreSQL に接続するその他の方法

環境変数を使用して接続情報を設定することができます。

export PGUSER=postgres
export PGHOST=localhost
export PGDATABASE=mydb
export PGPASSWORD=mypassword
export PGPORT=5432

node your_script.js

上記の例では、your_script.js は以下のコードで接続情報を取得できます。

const { Client } = require('pg');

const client = new Client();

client.connect((err) => {
  // ...
});

URL を使う

接続情報を URL 形式で指定することもできます。

const { Client } = require('pg');

const client = new Client({
  connectionString: 'postgres://postgres:mypassword@localhost:5432/mydb'
});

client.connect((err) => {
  // ...
});

SSL を使用して安全に接続するには、ssl オプションを connectionString または接続オプションに設定します。

const { Client } = require('pg');

const client = new Client({
  connectionString: 'postgres://postgres:mypassword@localhost:5432/mydb?ssl=true'
});

// または

const client = new Client({
  user: 'postgres',
  host: 'localhost',
  database: 'mydb',
  password: 'mypassword',
  port: 5432,
  ssl: true
});

client.connect((err) => {
  // ...
});

PgBouncer は、PostgreSQL への接続をプールし、パフォーマンスとスケーラビリティを向上させるためのプロキシサーバーです。PgBouncer を使用するには、PgBouncer の設定ファイルで接続情報を設定し、Node.js アプリケーションから PgBouncer に接続する必要があります。

Knex.js は、PostgreSQL と他のデータベースとのやり取りを簡素化するライブラリです。Knex.js を使用すると、SQL クエリをより直感的な方法で記述し、さまざまなデータベース間でコードを移植することができます。

これらの方法は、それぞれ異なる利点と欠点があります。ご自身のニーズに合った方法を選択してください。


postgresql node.js


PostgreSQLにおけるAUTO_INCREMENTに相当するデータ型

MySQLのAUTO_INCREMENTは、PostgreSQLではいくつかのデータ型で実現できます。それぞれのデータ型には、わずかな違いと利点・欠点があります。データ型SERIAL - 最も一般的で、自動的に1から始まる整数値を生成します。...


PostgreSQLスキーマパスを使いこなす! サンプルコードと設定方法の比較

スキーマパスを設定するには、以下の2つの方法があります。環境変数PGSCHEMA環境変数を設定することで、現在のセッションおよびその後のすべてのセッションでスキーマパスを設定することができます。postgresql. confファイルにsearch_pathパラメータを設定することで、すべてのセッションでスキーマパスを設定することができます。...


PostgreSQL: ALTER TABLEコマンドとDROP COLUMN句

構文:例:注意事項:削除する列が存在しない場合はエラーが発生します。削除する列に依存関係がある場合は、エラーが発生するか、参照整合性が失われる可能性があります。複数の列を同時に削除する場合は、カンマで区切ります。その他の方法:GUIツールを使用する: PostgreSQLには、pgAdminやDBeaverなどのGUIツールがあり、これらのツールを使って列を削除することができます。...