Prismaとは
PrismaはNode.jsを対象としたオープンソースORMのこと。
型安全なデータベースアクセスが特徴で、TypeScriptとの相性が良い。
RailsでいうActiveRecord。
Prismaを構成する5要素
Prisma Model
アプリケーションで使用するモデルを表現するもの。
モデル内でテーブルやカラムの定義を行うことが可能。
Prisma Clientでクエリーを発行するために必要となる。
Prisma schema
Prismaの設定ファイル。
データベースクライアントやマイグレーションファイルの生成を行う。
Prisma Client
Node.js および TypeScript用の自動生成された型安全なクエリビルダーのこと。
Prisma Modelでの型情報を使用して、クエリーの結果は型安全となる。
Prisma Migrate
宣言型データモデリングおよび移行システムで、Prisma Schemaの情報をベースにマイグレーション周りの処理が可能になる。
Prisma Studio
データベース上のデータを閲覧・編集することができるGUIのこと。
利用までの手順
-
以下のコマンドでPrismaのインストールを行う。
// yarnの場合 yarn add -D prisma // npmの場合 npm install prisma
-
Prismaを初期化する
- 「prismaフォルダ」と「.envファイル」が作成される。
npx prisma init
-
schema.prismaの設定
// prisma generateコマンドの対象 generator client { provider = “prisma-client-js” } // 使用データベースの情報 datasource db { provider = “mysql” url = env(“DATABASE_URL”) } // モデル(テーブル)情報 model User { id Int @id @default(autoincrement()) name String email String created_at DateTime @default(now()) updated_at DateTime @default(now()) }
-
envファイルのデータベース情報を書き換える。
.env// DATABASE_URL="使用DB://ユーザー名:パスワード@URL/DB名?schema=public" DATABASE_URL="mysql://postgresql:password@localhost:5432/test_db?schema=public"
-
以下のコマンドを実行してマイグレーションを行う。
npx prisma migrate dev --name init
-
prisma studioでテーブルが作成されているか確認する。
- http://localhost:5555で確認可能。
npx prisma studio
よく使うprismaメソッド
レコード作成
// prisma.テーブル名.createでレコードを作成可能
await prisma.users.create({
data: {
name: name,
email: email,
},
});
レコード全件取得
// テーブルのレコードを全件取得
await prisma.users.findMany();
// 特定の条件に該当するレコードを全件取得
await prisma.user.findMany({
where: {
email: email,
},
})
レコード個別取得
// ユニークなレコードを取得
await prisma.users.findUnique({
where: {
id: Number(req.params.id),
},
});
// 最初に一致したレコードを取得
await prisma.users.findFirst({
where: {
name: name,
},
});
レコード更新
await prisma.users.update({
where: {
id: Number(req.params.id),
},
data: {
name: updatedName,
email: updatedEmail,
},
});
レコード削除
await prisma.users.delete({
where: {
id: Number(req.params.id),
},
});
よく使うprismaコマンド
ローカルでschemaをDBへ反映させる
npx prisma migrate dev
seed実行
npx prisma db seed
GUI上でデータ確認
npx prisma studio
schemaでのerrorを確認
npx prisma validate