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を使う準備ができた