Nextjsとデータベースを繋げる機能,prismaに関する記事です
どういうものか
Prisma は、データベースとやり取りするためのモダンなツールセットを提供する次世代 ORM(オブジェクト・リレーショナル・マッピング)です。主に Node.jsおよび TypeScript プロジェクトで使用され、開発者が効率的にデータベース操作を行うのを助けます。以下は Prisma の主要な機能です
Prisma Schema
Prisma は、独自のスキーマ言語(Prisma Schema)を使用してデータベースモデルを定義します。これにより、データベーススキーマの設計がシンプルかつ明確になります。
Prisma Client
Prisma Client は、データベースに対してクエリやミューテーションを実行するための自動生成された TypeScript/JavaScript クライアントです。タイプセーフなクエリを簡単に書くことができます。
Prisma Migrate
Prisma Migrate は、データベースの移行を管理するツールです。スキーマの変更をバージョン管理し、データベースの整合性を保ちながらスムーズに移行を行えます。
Prisma Studio
Prisma Studio は、データベースデータを視覚的に操作するための GUI です。開発者はデータベースの内容をブラウズ、編集、管理することができます。
導入方法
Prisma のインストール
Prisma をプロジェクトにインストールします。以下のコマンドを実行して、Prisma とそのクライアントをインストールします。
npm install @prisma/client
npm install prisma --save-dev
Prisma の初期化
Prisma を初期化して、Prisma スキーマファイルを作成します。以下のコマンドを実行します。
これにより、prisma フォルダと schema.prisma ファイルがプロジェクトに追加されます。
npx prisma init
データベースの設定
prisma/schema.prisma ファイルを開き、データベースの接続設定を行います。例えば、
SQLite データベースを使用する場合は以下のように設定します。
datasource db {
provider = "sqlite"
// 使用するデータベースの種類
url = "file:./dev.db"
}
generator client {
provider = "prisma-client-js"
}
データベースモデルの定義
schema.prisma ファイルにデータベースモデルを定義します。例えば、ユーザーモデルを追加する場合は以下のようにします。
model User {
id Int @id @default(autoincrement())
name String
email String @unique
}
データベースのマイグレーション
データベースのマイグレーションを実行して、データベーススキーマを適用します。以下のコマンドを実行します。
npx prisma migrate dev --name init
Prisma クライアントの生成
Prisma クライアントを生成します。以下のコマンドを実行します。
npx prisma generate
Next.jsの場合で Prisma クライアントを使用
Prisma クライアントをインポートして、Next.js の API ルートやページコンポーネントで使用します。例えば、pages/api/users.js ファイルを作成し、以下のように Prisma クライアントを使用します。
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
export default async function handler(req, res) {
const users = await prisma.user.findMany();
res.json(users);
}
これで、Next.js プロジェクトに Prisma を導入し、データベースと連携する準備が整いました。
まとめた方法
1,初期化まで一括導入
npm install @prisma/client
npm install prisma --save-dev
npx prisma init
2,schema.prismaの定義(要編集)
datasource db {
provider = "sqlite"
url = "file:./dev.db"
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
}
3,マイグレーションでデータベース作成 ※ここでエラーが起きやすいので注意
npx prisma migrate dev --name init
4,Prisma クライアントを生成、これでデータの取出、追加、削除が可能に
npx prisma generate
便利ツール
データベースを視覚的にわかりやすく
npx prisma studio
Prisma スキーマのプッシュ
データベースにスキーマを直接反映させます。テスト環境での使用に適しています。
npx prisma db push
Prisma スキーマのフォーマット
Prisma スキーマファイルを整形します
npx prisma format
Prisma スキーマ(エラー)の検証
Prisma スキーマにエラーがないか検証します。
npx prisma validate