NestJS

NestJSとPrismaの連携方法|初心者向けガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

NestJSとPrismaの連携方法とは?

NestJSアプリケーションにPrismaを統合することで、データベース操作がシンプルかつ型安全になります。特にNode.js開発者やバックエンドエンジニアにとって、オブジェクトリレーショナルマッピング(ORM)の代替として注目されています。本記事では、NestJSとPrismaの連携方法を初心者向けに解説し、具体的な手順と実践例を通じて理解を深めます。


Prisma CLIのインストールと初期設定

NestJSプロジェクトでPrismaを使うにはまずCLIツールを準備します。このプロセスはプロジェクトの初期化とデータベース接続の基盤となるため、重要です。

インストール手順

  1. Prisma CLIのグローバルインストール
    bash
    npm install -g prisma

  2. プロジェクト内での初期設定
    プロジェクトディレクトリに移動後、以下のコマンドで初期化します。
    bash
    npx prisma init

    この際、データベース接続先(例: PostgreSQL)を指定します。

  3. 生成されたファイルの確認
    prismaフォルダ内にschema.prisma.envが作成されます。これらは後で詳しく解説します。


NestJSプロジェクトへのPrismaモジュール導入

NestJSアプリケーションにPrismaを統合するには、@prisma/clientパッケージを追加し、モジュール内で使用可能なように設定します。

手順

  1. 依存関係のインストール
    bash
    npm install @prisma/client

  2. app.module.tsへの導入例
    typescript
    import { Module } from '@nestjs/common';
    import { PrismaService } from './prisma/prisma.service';

@Module({
providers: [PrismaService],
})
export class AppModule {}

  1. サービスファイルの作成
    prisma/prisma.service.tsを作成し、以下のように実装します。
    typescript
    import { Injectable } from '@nestjs/common';
    import { PrismaClient } from '@prisma/client';

@Injectable()
export class PrismaService extends PrismaClient {}


データベース接続設定ファイル(.env)の作成

.envファイルは、アプリケーションで使用する環境変数を管理するために必須です。データベースのURLや認証情報を安全に保管できます。

.envファイルの構造例

注意: 本番環境では.envファイルをリポジトリから除外し、セキュアな方法で管理してください。具体的には、プロジェクトルートの.gitignoreに以下の行を追加します:

これにより、Gitによる誤ったコミットや公開が防げます。


Prismaスキーマ定義(schema.prisma)の書き方

データベース構造はschema.prismaに記述します。モデルとリレーションシップを明確にすることで、型安全かつ保守性の高い設計が可能になります。

基本的なモデル定義

リレーションシップ設定例

項目 補足
型指定 Int, Stringなど データベースの列と一致させる
リレーション @relation() 外部キーを明示的に設定

TypeORMとの比較・代替案検討

PrismaはTypeORMと同様にデータベース操作を簡略化するツールですが、使いどころが異なります。

メリット・デメリット比較

項目 TypeORM Prisma
設定の複雑さ オプションが多く学習曲線が高い CLIツールで自動生成により直感的
型安全性 プログラマが型を管理する Prismaクライアントが自動生成
マイグレーション 複雑な手動操作が必要 prisma migrateコマンドで自動化

選択のポイント: タイプセーフティを重視し、コード生成による保守性向上を目指す場合はPrismaが適しています。Prisma公式ドキュメントに記載された推奨事項を参考にすると良いです。


GraphQL APIとの連携例

GraphQLサーバーにPrismaを使用することで、データベース操作とAPI設計を統合的に管理できます。以下は基本的な実装手順です。

ResolverでのPrisma利用例

QueryとMutationの実装例

注意: GraphQLサーバー構築には@nestjs/graphqlパッケージを追加し、GraphQLModule.forRoot()で設定してください。この際、PrismaクライアントとGraphQLの同期性に注意が必要です。


導入時のベストプラクティスと注意点

Prismaの導入に際しては、開発環境と本番環境での差異やエラーハンドリングを考慮する必要があります。以下が主要なポイントです。

環境分離の方法

  • 開発用: DATABASE_URL="postgresql://user:password@localhost:5432/mydb-dev"
  • 本番用: セキュアなクラウドデータベース(例: AWS RDS)を使用し、URLを環境変数で管理。

エラーハンドリングの基本

重要なポイント: prisma migrateを定期的に実行し、スキーマ変更を確実に反映してください。Prismaのマイグレーションガイドを参照ください。


NestJS+PrismaサンプルプロジェクトのGitHubリポジトリ
本記事で紹介したコードはこちらから確認可能です。実際のプロジェクト構成や設定ファイルも含んでいます。


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-NestJS