JavaScriptとTypeScriptのためのより良いORMであるPrismaを使用して、NestJSアプリでMySQL、PostgreSQL、SQL Serverデータベースからデータをクエリします。
Prismaはデータ操作を容易にします!タイプセーフなNode.js & TypeScript ORM、グローバルデータベースキャッシュ、接続プーリング、およびリアルタイムデータベースイベントを提供します。
// Creating a new recordawait prisma.user.create({firstName: “Alice”,email: “alice@prisma.io”})
id firstName email1 Bobby bobby@tables.io2 Nilufar nilu@email.com3 Jürgen jums@dums.edu4 Alice alice@prisma.io
Prisma ORMは、NestJS アプリでデータベースをクエリするために使用できる次世代ORMです。TypeScriptを採用して、ランタイムエラーを回避し、生産性を向上させます。それが提供するタイプセーフ性は、TypeORMやSequelizeのような従来のORMの保証をはるかに超えています(詳細はこちら)。
Prismaは、RESTまたはGraphQL APIを構築しているかどうかにかかわらず、NestJSのモジュールアーキテクチャとスムーズに統合します。
追加ツールでPrisma ORMの使用をさらに強化できます
• Prisma Accelerate は、データベースクエリを高速化するグローバルデータベースキャッシュおよびスケーラブルな接続プールです。
• Prisma Pulse を使用すると、タイプセーフな方法でリアクティブなリアルタイムアプリケーションを構築できます。
NestJSとPrismaを組み合わせることで、Node.js & TypeScriptエコシステムの他のORMでは実現できない新しいレベルのタイプセーフ性が提供されます。この例では、Prisma Clientの使用方法を示します
NestJSのモジュールアーキテクチャに従い、依存性注入を介して、アプリケーションコントローラーにCRUDまたはドメイン固有の操作を提供するUserService
クラスを実装します。
PrismaService
クラスは、生成されたPrismaClient
を拡張することにより実装でき、NestJSアーキテクチャと統合するPrisma Clientの抽象化を構築します。これは、依存性注入を介して他のサービスおよびコントローラーに提供されます。
1import { Injectable, OnModuleInit, INestApplication } from '@nestjs/common'2import { PrismaClient } from '@prisma/client'34@Injectable()5export class PrismaService extends PrismaClient6 implements OnModuleInit {78 async onModuleInit() {9 await this.$connect();10 }11}
PrismaService
クラスは、生成されたPrismaClient
を拡張することにより実装でき、NestJSアーキテクチャと統合するPrisma Clientの抽象化を構築します。これは、依存性注入を介して他のサービスおよびコントローラーに提供されます。
1import { Injectable, OnModuleInit, INestApplication } from '@nestjs/common'2import { PrismaClient } from '@prisma/client'34@Injectable()5export class PrismaService extends PrismaClient6 implements OnModuleInit {78 async onModuleInit() {9 await this.$connect();10 }11}
Prismaは、部分モデルとリレーションをクエリする場合でも、完全なタイプセーフ性を提供する最初のORMです。
PrismaはNestJSのモジュールアーキテクチャに完全に適合し、強力なデータベースアクセスレイヤーを提供します。
Prisma Clientは、JavaScriptでもオートコンプリートのような利点がある、完全にタイプセーフなデータベースクエリを保証します。
Prismaの宣言型モデリング言語はシンプルで、データベーススキーマを直感的に記述できます。
宣言型のPrismaスキーマから予測可能でカスタマイズ可能なSQL移行を生成します。
Prisma Clientは、一般的なAPI機能(例:ページネーション、フィルターなど)のクエリを提供することで、ボイラープレートを削減します。
本番環境でNestJSとPrismaを構築するために必要なすべてを網羅したスターターキット。
公式NestJSドキュメントでNestJSとPrismaの使用方法を学びます。
NestJS REST APIをPrismaで構築するための包括的なワークショップとシリーズ。
NestJSアプリをTypeORMからPrismaに移行するプロセスに関する詳細な記事。
コミュニティメンバーやPrismaチームと交流できる複数のチャンネルがあります。