Попаднах на проблем с Prisma, който ме накара да изгубя малко време, така че ще напиша как го разреших.
Моделът нямаше id
поле, отбелязано като @id
така че добавих @@unique()
да кажете user
и tweet
, заедно, дефинираха unique
ограничавам.
model Like {
user Int
tweet Int
createdAt DateTime @default(now())
@@unique([user, tweet])
}
Това означава, че не можем да имаме повече от 1 същия запис на (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
}
}
})
С други думи, комбиниране на уникалните полета, като ги обединява с долно черта.
В ретроспекция съобщението за грешка обясняваше това, но не го разбрах.