Prismaで問題が発生し、少し時間が失われたので、どのように解決したかを書きます。
モデルにid
がありませんでした @id
としてマークされたフィールド そこで、@@unique()
を追加しました user
と言う およびtweet
、一緒に、unique
を定義しました 制約します。
model Like {
user Int
tweet Int
createdAt DateTime @default(now())
@@unique([user, tweet])
}
つまり、(user, tweet)
の同じエントリを複数持つことはできません。 エントリ。
でエントリを削除しようとしたとき
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
エラーメッセージが表示されます:
PrismaClientValidationError:
Invalid `prisma.like.delete()` invocation:
{
where: {
user: 12,
~~~~
tweet: 22
~~~~~
}
~~~~~~~~~~~
}
Argument where of type LikeWhereUniqueInput needs exactly one argument, but you provided user and tweet. Please choose one. Available args:
type LikeWhereUniqueInput {
user_tweet?: LikeUserTweetCompoundUniqueInput
}
私がしなければならなかったのは変化でした
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
に
await prisma.like.delete({
where: {
user_tweet: {
user: 1,
tweet: 1
}
}
})
つまり、それらを連結する一意のフィールドをアンダースコアと組み合わせます。
振り返ってみると、エラーメッセージはこれを説明するようなものでしたが、わかりませんでした。