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.