データベースを操作する場合、開発者は生のデータベース クエリを使用するか、複雑さを一部抽象化したライブラリを利用するかの選択に直面することがよくあります。 Sequelize はそのようなライブラリの 1 つで、PostgreSQL、MySQL、およびその他のリレーショナル データベースで動作する人気のある Node.js ORM (オブジェクト リレーショナル マッパー) です。このチュートリアルでは、Node.js で Sequelize を使用して PostgreSQL データベースに接続する方法を詳しく説明し、インストール、構成、モデルの作成、CRUD 操作の実行について説明します。
Sequelize は、SQL クエリ上に抽象化レイヤーを提供することでデータベースの対話を簡素化します。 PostgreSQL に接続するために内部で pg ライブラリを利用します。 Sequelize を開始するには、次の手順に従ってください:
プロジェクトを初期化する
新しいプロジェクトを開始する場合は、Node.js プロジェクトを初期化して package.json ファイルを作成します。
npm init -y
Sequelize と PostgreSQL ドライバーをインストールします
PostgreSQL ドライバーのページと一緒に Sequelize をインストールします:
npm install pg sequelize
データベース構成のセットアップ
Node.js アプリケーションでは、まず PostgreSQL データベース アクセス変数を定義する必要があります。
const user = '<postgres_user>'; const host = 'localhost'; const database = '<postgres_db_name>'; const password = '<postgres_password>'; const port = '<postgres_port>';
Sequelize をインポート
Sequelize から必要なオブジェクトをインポートします:
const { Sequelize, Model, DataTypes } = require('sequelize');
初期化 Sequelize
データベース構成を使用して新しい Sequelize インスタンスを作成します:
const sequelize = new Sequelize(database, user, password, { host, port, dialect: 'postgres', logging: false });
ここでは、PostgreSQL を使用していることを示すために方言「postgres」を指定します。また、コンソール出力をクリーンに保つために SQL クエリ ログも無効にします。ただし、デバッグ中に有効にすることもできます。
Sequelize のモデルはデータベース内のテーブルを表します。各モデルは、対応するテーブルの構造を定義し、テーブルと対話するためのメソッドを提供します。
モデルを定義する
列名と年齢を含む cat という名前のテーブルがあるとします。次のように、このテーブルの Sequelize モデルを定義できます:
class Cat extends Model {} Cat.init({ name: { type: DataTypes.STRING, allowNull: false }, age: { type: DataTypes.INTEGER, allowNull: false } }, { sequelize, modelName: 'cat', timestamps: false });
この例では:
- `Cat` extends Sequelize’s `Model` class. - `init()` sets up the model with column definitions and configuration. - We use `DataTypes.STRING` and `DataTypes.INTEGER` to define column types. - `timestamps: false` disables automatic timestamp fields (`createdAt` and `updatedAt`).
Sequelize は、データベースをクエリするためのさまざまなメソッドを提供します。 Sequelize を使用してデータを取得する方法は次のとおりです:
すべてのレコードを取得
cats テーブルからすべてのレコードを取得するには:
const results = await Cat.findAll(); console.log(results);
findAll() は、テーブル内の行を表すインスタンスの配列に解決される Promise を返します。
取得する列を制限する
特定の列のみが必要な場合は、属性オプションを使用します。
const results = await Cat.findAll({ attributes: ['age'] }); console.log(results);
WHERE 句を追加します
結果をフィルターするには、where オプションを使用します。たとえば、8 歳のすべての猫を検索するには:
const results = await Cat.findAll({ where: { age: 8 } }); console.log(results);
5 歳以上のすべての猫を検索するには:
const { Op } = require('sequelize'); const results = await Cat.findAll({ where: { age: { [Op.gte]: 5 } } }); console.log(results);
並べ替えと制限を適用する
結果を並べ替えて、返される行数を制限するには:
const results = await Cat.findAll({ limit: 10, order: [ ['name', 'DESC'] ] }); console.log(results);
データベースに新しいレコードを挿入するには、create() メソッドを使用します。
const name = 'Garfield'; const age = 8; const result = await Cat.create({ name, age }); console.log('New Cat:', result);
既存のレコードを更新するには、update() メソッドを使用します。
await Cat.update( { age: 9 }, { where: { name: 'Garfield' } } );
すべての行を更新する場合 (この操作には注意してください)、where 句を省略します。
await Cat.update( { age: 10 } );
このチュートリアルでは、Sequelize を使用して PostgreSQL データベースと対話する方法を検討しました。まず Sequelize をインストールして構成し、データベース テーブルを表すモデルを作成しました。
Sequelize のメソッドを使用してデータをクエリ、挿入、更新する方法を学びました。この強力な ORM は、SQL クエリに対する高レベルの抽象化を提供することで、リレーショナル データベースの操作を簡素化します。
Sequelize とその機能をさらに詳しく調べるには、次のリソースを検討してください。
Sequelize を活用することで、データベースのやり取りを合理化し、堅牢なアプリケーションの構築にさらに集中できます。コーディングを楽しんでください!
以上がPostgreSQL を Node.js に接続して Sequelize する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。