Prisma + TypeScriptで、DBにINSERTするパラメータの型を取得する
PrismaでINSERTする場合、メソッドの引数にアイテムの情報を渡します。 ただし場合によっては、アイテムの中身を条件分岐させる実装が必要になります。 この場合、 TypeScriptではuserの型を指定しなければ […]
広告ここから
広告ここまで
目次
PrismaでINSERTする場合、メソッドの引数にアイテムの情報を渡します。
await prisma.user.create({
data: {
name: 'Alice',
email: '[email protected]'
}
})
ただし場合によっては、アイテムの中身を条件分岐させる実装が必要になります。
const user = {
name: 'Alice',
email: '[email protected]'
}
// 引数にデータがあるなら追加する
if (props.age) {
user.age = props. age
}
await prisma.user.create({
data: props
})
この場合、 TypeScriptではuser
の型を指定しなければなりません。
TypeScriptでは、Prisma.<ModelName>CreateInput
をつかう
自前で型を設定してもよいのですが、Prisma側に型データがあるのでこれを使いましょう。
import { Prisma, PrismaClient } from "@prisma/client";
const prisma = new PrismaClient()
const userData: Prisma.UserCreateInput = {
name: 'Alice',
email: '[email protected]'
}
// 引数にデータがあるなら追加する
if (props.age) {
user.age = props. age
}
const user = await prisma.user.create({
data: userData
})
await prisma.$disconnect()
Relation先のデータなども型定義されていますので、覚えてしまえば便利です。
UPDATE / SELECT / WHEREなどにも対応
ざっとIDEでコードを追っただけですが、大体のSQL操作に必要な型は自動生成される様子です。
type UserUpdateInpput = Prisma.UserUpdateInput
type UserSelect = Prisma.UserSelect
type UserWhere = Prisma.UserWhereInput
findFirst
やfindMany
の引数そのものの型もあります。
type UserFindManyArgs = Prisma.UserFindManyArgs
type UserFindFirstArgs = Prisma.UserFindFirstArgs