PrismaでMySQL、PostgreSQL、SQL Serverデータベースからデータをクエリ – Node.js向けの型安全なTypeScript ORM
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
TypeScriptはJavaScriptを基盤とする静的型付け言語です。JavaScriptのすべての機能に加え、コードを型付けして検証する機能を提供し、コードを実行する前にエラーを捕捉して修正を提供することで時間を節約できます。有効なJavaScriptコードはすべてTypeScriptコードでもあるため、TypeScriptは簡単に採用できます。
Prismaは、データベーススキーマから型を自動生成することにより、コストゼロで型安全性の利点を提供するNode.jsおよびTypeScript向けのORMです。 信頼性の高いデータ集約型アプリケーションの構築に最適です。Prismaは、リレーショナルデータベースにデータを保存する際に、より自信と生産性をもたらします。Node.jsサーバーフレームワークで使用して、データベースと対話できます。
Prismaスキーマは、Prismaのモデリング言語を使用してデータベーススキーマを定義し、対応するTypeScript型を生成します。特にリレーションのモデリングに関して、データモデリングを簡単かつ直感的にします。
1// Define the `User` table in the database2model User {3 id String @id @default(cuid())4 email String @unique5 password String6 name String?7 posts Post[]8}910// Define the `Post` table in the database11model Post {12 id String @id @default(cuid())13 createdAt DateTime @default(now())14 title String15 content String?16 authorId String17 author User @relation(fields: [authorId], references: [id])18}
Prismaスキーマから生成された型は、すべてのデータベースクエリが型安全であることを保証します。Prisma Clientは、素晴らしいオートコンプリート体験を提供し、迅速に作業を進め、無効なクエリを記述しないようにすることができます。
1type User = {2 id: string3 email: string4 password: string5 name: string | null6}78export type Post = {9 id: string10 createdAt: Date11 title: string12 content: string | null13 authorId: string14}
スキーマを一度定義すれば、PrismaがTypeScript型を自動生成します。データベーススキーマとアプリケーションコードの型を手動で同期する必要はありません。
以下のコードは、Prismaを使用したデータベースクエリが、部分的なクエリやリレーションを含め、完全に型安全であることを示しています。
Prisma Clientを使用したクエリは、常にその戻り値の型が推論されるため、リレーションを取得する場合でも、返されるデータについて簡単に推論できます。
1// Inferred type:2// User & {3// posts: Post[];4// }5const user = await prisma.user.create({6 data: {7 email: 'alice@prisma.io',8 password: '0ee4808f893b8e05bdd251048d5c4c8af8bb89403676dda95619841a481f8e87',9 name: 'Alice',10 posts: {11 create: {12 title: 'Learn how to use Prisma with TypeScript',13 content: 'https://prisma.dokyumento.jp/docs/',14 },15 },16 },17 include: {18 posts: true,19 },20})
Prisma Clientを使用したクエリは、常にその戻り値の型が推論されるため、リレーションを取得する場合でも、返されるデータについて簡単に推論できます。
1// Inferred type:2// User & {3// posts: Post[];4// }5const user = await prisma.user.create({6 data: {7 email: 'alice@prisma.io',8 password: '0ee4808f893b8e05bdd251048d5c4c8af8bb89403676dda95619841a481f8e87',9 name: 'Alice',10 posts: {11 create: {12 title: 'Learn how to use Prisma with TypeScript',13 content: 'https://prisma.dokyumento.jp/docs/',14 },15 },16 },17 include: {18 posts: true,19 },20})
Prisma Clientは、完全に型安全なデータベースクエリを保証し、無効なクエリを記述することを防ぎます。
Prismaの組み込みデータローダーは、N+1クエリであっても、最適化されパフォーマンスの高いデータベースクエリを保証します。
Prismaは、クエリを記述する際に豊富なオートコンプリートでクエリの記述を支援します。
Prisma Clientを使用したクエリは、常にその戻り値の型が推論されるため、データを簡単に推論できます。
Prismaスキーマをデータベースにマッピングするため、データベーススキーマを管理するためにSQLを記述する必要はありません。
Prisma Clientは、一般的なデータベース機能のための便利なAPIを提供することで、ボイラープレートを削減します。
1const users = await prisma.user.findMany({2 where: {3 email: {4 endsWith: '@prisma.io',5 }6 },7 include: {8 p9 }10})
Prismaでは、TypeScriptを愛しており、その明るい未来を信じています。Prismaの開始以来、私たちは TypeScriptコンパイラを限界まで活用 し、前例のない型安全なデータベースアクセスと、快適な開発者体験のための豊富なオートコンプリートを提供するために取り組んできました。
Prismaは、ミスを減らすために型安全性を中心に構築されています。TypeScriptの構造的な型システムを活用することで、Prismaはデータベースクエリを 構造型 にマッピングするため、記述するすべてのPrisma Clientクエリに対して、返されるデータの正確な形状を知ることができます。
TypeScript Berlin Meetupは2019年に始まり、世界で最も人気のあるTypeScript Meetupの1つです
Prisma、TypeScript、およびさまざまなフレームワークとAPIテクノロジーを使用した、すぐに実行できるサンプルプロジェクト
hapiとPrismaを使用した最新のバックエンドを構築するためのチュートリアルシリーズ
コミュニティメンバーやPrismaチームと交流できる複数のチャンネルがあります。