Jag stötte på ett problem med Prisma som fick mig att förlora lite tid, så jag ska skriva hur jag löste det.
Modellen hade inget id fält markerat som @id så jag lade till en @@unique() för att säga user och tweet , tillsammans, definierade den unique begränsa.
model Like {
user Int
tweet Int
createdAt DateTime @default(now())
@@unique([user, tweet])
}
Det betyder att vi inte kan ha mer än 1 samma inmatning av (user, tweet) poster.
När jag försökte ta bort en post med
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
}) Jag stöter på ett felmeddelande:
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
} Det jag var tvungen att göra var att ändra
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
}) till
await prisma.like.delete({
where: {
user_tweet: {
user: 1,
tweet: 1
}
}
}) Med andra ord, att kombinera de unika fälten som sammanfogar dem med ett understreck.
I efterhand förklarade felmeddelandet det här, men jag förstod det inte.