Next.jsからDBにアクセスする機会がなく、知ってはいたが使ったことがなかったPrisma client のセットアップする
DBはPostgreSQLがすでにあり、データも入っているのでDB作成や更新はなく、接続して検索するのみ
インストール
npm install prisma
PostgreSQLを使っているので、--datasource-provider postgresqlを指定して初期化する
npx prisma init --datasource-provider postgresql
すると、prisma/schema.prismaとenvファイルが生成される
prisma/schema.prismaには以下の情報が記載されていて
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
.envファイルにはDATABASE_URLのキー名に接続先のURLが記載されているのでこれを接続先のDBのURLに変える
モデルの作成
schema.prisma にデータモデルを定義するのだが、すでにDBはあるのでそれを素に schema.prisma に反映したい
そこで db pull コマンドを使う
npx prisma db pull
https://www.prisma.io/docs/orm/reference/prisma-cli-reference#db
これを使うとschema.prismaが更新される(上書きなので注意)
Prisma Client を生成する
schema.prismaを素に今度は Prisma Client を生成する
npx prisma generate
これによりデータモデルに沿った型定義などが生成され、補完も効くようになる
検索する
PrismaClientをimportし、PrismaClientのインスタンスを作る
今回はfindManyで検索をする
import { PrismaClient } from "@prisma/client"; const prisma = new PrismaClient(); const result = await prisma.my_table.findMany({ where: { my_field: id, }, });
これでPrismaを使う準備ができた