はじめに
- prisma.jsを触って覚えたことをまとめてみました。 www.prisma.io
Viewテーブルをprisma.jsから利用する方法
- 下記のようなviewテーブルを作成した場合
create view productlist as
select id,
name
from product;
npx prisma introspectコマンドを実行しても定義が出力されないのでprisma/schema.prismaファイルに手動でviewテーブルの定義を追加する
model productlist {
id Int @unique
name String @db.VarChar(255)
@@map("productlist")
}
※Viewテーブルの場合、特にユニーク制約などはつくなくて良いのですが、指定しないでnpx prisma generateを実行するとエラーになるため、idフィールドに@uniqueを指定するようにしている。
error: Error validating model "productlist": Each model must have at least one unique criteria that has only required fields. Either mark a single field with `@id`, `@unique` or add a multi field criterion with `@@id([])` or `@@unique([])` to the model.
- 下記のコマンドを実行するとviewテーブルのモデルを利用する事ができる。
npx prisma generate
検索フォームの条件によってwhereの条件を変えたい
- 下記のように検索フォームの条件が何もなかった場合、undefinedを指定すると検索条件とみなされずに
select * from productlistで実行される
const conversions = await prisma.productlist.findMany({
where: {
name: {
contains: searchName ? searchName : undefined,
},
}}
)
実行されるモデルのSQLを確認する方法
- PrismaClientに
log: ['query']を指定するとconsole.logにSQLが表示される
const prisma = new PrismaClient({log: ['query']})