TypeScript ORM
データベースのためのゼロコスト型安全性

Prisma(Node.js用タイプセーフなTypeScript ORM)を使用して、MySQL、PostgreSQL、SQL Serverデータベースからデータをクエリ。

tech

Prismaとは?

Prismaは、優れた開発者エクスペリエンスで高性能なNext.jsアプリを構築するための完璧なパートナーとなるデータベースツールを提供します。

ORM

Prisma ORMは最も人気のあるTypeScript ORMです。人間が読めるスキーマ、自動マイグレーション、直感的で完全な型安全なクエリAPIが付属しています。

Prisma ORMについてもっと知る

Postgres

Prisma Postgresは、コールドスタートがない初のサーバーレスデータベースです。ユニカーネルに基づいてベアメタル上で動作し、組み込みのキャッシュ、高性能なクエリ、シームレスなスケーリングを提供し、すべて優れた開発者エクスペリエンスを備えています。

Prisma Postgresについてもっと知る

PrismaとTypeScriptの連携方法

TypeScriptはJavaScript上に構築された静的型付け言語です。JavaScriptのすべての機能に加え、コードを型付けして検証する機能を提供し、コードを実行する前にエラーを捕捉して修正を提供することで時間を節約します。すべての有効なJavaScriptコードはTypeScriptコードでもあるため、TypeScriptは簡単に導入できます。

PrismaはNode.jsおよびTypeScript用のORMであり、データベーススキーマから型を自動生成することで、ゼロコストで型安全性のメリットを提供します。信頼性の高いデータ集約型アプリケーションの構築に最適です。Prismaは、リレーショナルデータベースにデータを保存する際に、より自信と生産性をもたらします。任意のNode.jsサーバーフレームワークと組み合わせて、データベースと対話できます。

Prismaスキーマ

Prismaスキーマは、Prismaのモデリング言語を使用してデータベーススキーマを定義し、対応するTypeScript型を生成します。これにより、データモデリング、特にリレーションのモデリングが簡単で直感的になります。

1// Define the `User` table in the database
2model User {
3 id String @id @default(cuid())
4 email String @unique
5 password String
6 name String?
7 posts Post[]
8}
9
10// Define the `Post` table in the database
11model Post {
12 id String @id @default(cuid())
13 createdAt DateTime @default(now())
14 title String
15 content String?
16 authorId String
17 author User @relation(fields: [authorId], references: [id])
18}

Prismaスキーマから生成された型は、すべてのデータベースクエリが型安全であることを保証します。Prisma Clientは素晴らしいオートコンプリート体験を提供するため、迅速に作業を進め、無効なクエリを作成しないことを確実にします。

1type User = {
2 id: string
3 email: string
4 password: string
5 name: string | null
6}
7
8export type Post = {
9 id: string
10 createdAt: Date
11 title: string
12 content: string | null
13 authorId: string
14}

PrismaとTypeScriptのコード例

スキーマを一度定義するだけで、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とTypeScriptなのか?

型安全なデータベースクライアント

Prisma Clientは完全な型安全なデータベースクエリを保証し、無効なクエリを作成することがありません

最適化されたデータベースクエリ

Prismaに組み込まれたデータローダーは、N+1クエリであっても、最適化された高性能なデータベースクエリを保証します。

オートコンプリート

Prismaは、クエリ作成時に豊富なオートコンプリート機能でクエリ作成を支援します

型推論

Prisma Clientでのクエリは常にその戻り型が推論されるため、データを簡単に推論できます。

簡単なデータベースマイグレーション

Prismaスキーマをデータベースにマッピングすることで、データベーススキーマを管理するためにSQLを記述する必要がなくなります。

フィルター、ページネーション、並べ替え

Prisma Clientは、一般的なデータベース機能のための便利なAPIを提供することで、定型的なコードを削減します。

index.tsx
1const users = await prisma.user.findMany({
2 where: {
3 email: {
4 endsWith: '@prisma.io',
5 }
6 },
7 include: {
8 p
9 }
10})
 
postsPost[]

私たちはTypeScriptが大好きです

Prismaでは、私たちはTypeScriptを愛し、その明るい未来を信じています。Prismaの設立以来、私たちは TypeScriptコンパイラを限界まで 活用し、前例のない型安全なデータベースアクセスと、快適な開発者エクスペリエンスのための豊富なオートコンプリートを提供してきました。

Prismaは型安全性を核として構築されており、間違いを減らすことができます。TypeScriptの構造的型システムを活用することで、Prismaはデータベースクエリを 構造型に マッピングし、記述するすべてのPrisma Clientクエリについて、返されるデータの正確な形状を知ることができます。

当社のTypeScriptリソース

TypeScriptベルリンミートアップ

TypeScriptベルリンミートアップは2019年に始まり、世界で最も人気のあるTypeScriptミートアップの一つです

Prisma TypeScriptの例

Prisma、TypeScript、さまざまなフレームワーク、API技術を使用した、すぐに実行できるサンプルプロジェクト

TypeScript、PostgreSQL、Prismaでモダンなバックエンドを構築する

hapiとPrismaでモダンなバックエンドを構築するためのチュートリアルシリーズ

© . All rights reserved.