Jeg løb ind i et problem med Prisma, der fik mig til at miste lidt tid, så jeg vil skrive, hvordan jeg løste det.
Modellen havde ikke et id felt markeret som @id så jeg tilføjede en @@unique() at sige user og tweet , sammen definerede den unique begrænse.
model Like {
user Int
tweet Int
createdAt DateTime @default(now())
@@unique([user, tweet])
}
Det betyder, at vi ikke kan have mere end 1 samme indtastning af (user, tweet) poster.
Da jeg forsøgte at slette en post med
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
}) Jeg støder på en fejlmeddelelse:
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, jeg skulle gøre, var at ændre
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
}) til
await prisma.like.delete({
where: {
user_tweet: {
user: 1,
tweet: 1
}
}
}) Med andre ord, ved at kombinere de unikke felter, der sammenkæder dem med en understregning.
Set i bakspejlet var fejlmeddelelsen en slags forklaring på dette, men jeg forstod det ikke.