UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Prisma】prisma client のセットアップ

Next.jsからDBにアクセスする機会がなく、知ってはいたが使ったことがなかったPrisma client のセットアップする

www.prisma.io

DBはPostgreSQLがすでにあり、データも入っているのでDB作成や更新はなく、接続して検索するのみ

インストール

npm install prisma

PostgreSQLを使っているので、--datasource-provider postgresqlを指定して初期化する

npx prisma init --datasource-provider postgresql

すると、prisma/schema.prismaenvファイルが生成される

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