【Node.js + PostgreSQL】データベース操作をもっと便利に! 高度な接続方法
Node.js で PostgreSQL に接続する方法
必要なもの
- Node.js がインストールされていること
- PostgreSQL データベースが起動していること
pg
モジュール
手順
pg
モジュールをインストールします。
npm install pg
- 以下のコードを使用して、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 データベースとの接続を切断しました。');
});
});
- 接続オプションは、
user
、host
、database
、password
、port
などのプロパティを使用して設定します。 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