概要
Prismaを使ったプロジェクトを半年くらい担当していたが、そのプロジェクト離れることになったのでまた使う時のためのメモ
公式ドキュメント
prisma-client
Prisma Client API reference
CRUD
メソッド | アクション | メモ |
---|---|---|
create | 作成 | |
createMany | 一括作成 | bulk insert |
findUnique | 取得 | 一意の識別子またはIDを指定する必要がある |
findFirst | 取得 | 条件に一致する最初のレコードを取得 |
findMany | 複数件取得 | 条件に一致する全てのレコードを取得 |
update | 更新 | 1.条件に一致するレコードを更新 2.一意の識別子またはIDを指定する必要がある |
updateMany | 複数件更新 | 条件に一致する全てのレコードを更新 |
upsert | 作成・更新 | 条件に一致するレコードが存在していれば更新、していなければ作成する |
delete | 削除 | 条件に一致するレコードを削除する |
deleteMany | 複数件削除 | 条件に一致する全てのレコードを削除する |
example
// ageが20のuserを取得
prisma.user.findMany({
where: {
age: 20,
},
})
// idが22のuser名を'taro'に変更
prisma.user.update({
where: {
id: 22,
},
data: {
name: 'taro'
}
})
query options
名前 | 内容 | ノート |
---|---|---|
select | レコードのフィールドを指定 | |
include | レコードに含めるリレーションの先を指定 | |
where | 任意のプロパティでフィルタリング | |
orderBy | レコードのリストを並べ替える | |
skip | 任意の数レコードをスキップする | |
take | 指定したレコード数を取得する | |
cursor | レコードの取得位置を指定 | IDまたは別の一意の値を指定します |
Filter conditions and operators
演算子とそれぞれの条件
演算子 | 条件 | ノート |
---|---|---|
equals | 値が等しいか | |
not | 値が等しくないか | |
in | リストに存在するか | |
notIn | リストに存在しないか | nullのフィールドのものは所得できない |
lt | n未満 | 数値や日付など |
lte | n以下 | 数値や日付など |
gt | nより大きい | 数値や日付など |
gte | n以上 | 数値や日付など |
contains | 含んでいるか | |
startsWith | xから始まるか | 前方一致 |
endsWith | xで終わるか | 後方一致 |
AND | 複数の条件に一致するか | リストで指定する |
OR | 1つ以上の条件に一致するか | リストで指定する |
NOT | 複数の条件に一致しないか | リストで指定する |
Relation filters
演算子 | 条件 | メモ |
---|---|---|
some | いくつかのフィルタ条件に一致するか | |
every | 全てのフィルタ条件に一致するか | |
none | 全てのフィルタ条件に一致しないか | |
is | フィルタ条件に一致するか | |
isNot | フィルタ条件に一致しないか |
example
// ageが20以上のuserを取得
prisma.user.findMany({
where: {
age: {
gte: 20
},
},
})
// idが22のuser名を'taro'に変更
prisma.user.update({
where: {
id: 22,
},
data: {
name: 'taro'
}
})
// jobがTeacherかEngineerのuserを取得
prisma.user.findMany({
where: {
job: {
some: {
in: ['Teacher', 'Engineer']
}
},
}
})
感想
Prismaはプレビューの機能があったりまだまだ発展途上のORMだと感じましたが、すごく直感的に操作ができて使いやすかったです。
他の機能も使用する機会があれば追加していきます。
最後に
アルサーガパートナーズ Advent Calendar 2021 12日目は @1zushun さんのターンです。