Ik kwam een probleem tegen met Prisma waardoor ik wat tijd verloor, dus ik zal schrijven hoe ik het heb opgelost.
Het model had geen id
veld gemarkeerd als @id
dus ik heb een @@unique()
. toegevoegd om user
. te zeggen en tweet
, samen, definieerden de unique
beperken.
model Like {
user Int
tweet Int
createdAt DateTime @default(now())
@@unique([user, tweet])
}
Dit betekent dat we niet meer dan 1 dezelfde invoer van (user, tweet)
. kunnen hebben inzendingen.
Toen ik probeerde een invoer te verwijderen met
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
Ik kom een foutmelding tegen:
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
}
Wat ik moest doen was veranderen
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
naar
await prisma.like.delete({
where: {
user_tweet: {
user: 1,
tweet: 1
}
}
})
Met andere woorden, door de unieke velden te combineren met een onderstrepingsteken.
Achteraf gezien was de foutmelding een soort van uitleg, maar ik heb het niet begrepen.