Natknąłem się na problem z Prismą, który sprawił, że straciłem trochę czasu, więc napiszę, jak go rozwiązałem.
Model nie miał id
pole oznaczone jako @id
więc dodałem @@unique()
powiedzieć user
i tweet
razem zdefiniowali unique
ograniczać.
model Like {
user Int
tweet Int
createdAt DateTime @default(now())
@@unique([user, tweet])
}
Oznacza to, że nie możemy mieć więcej niż 1 takich samych wpisów (user, tweet)
wpisy.
Kiedy próbowałem usunąć wpis za pomocą
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
Pojawia się komunikat o błędzie:
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
}
To, co musiałem zrobić, to zmienić
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
do
await prisma.like.delete({
where: {
user_tweet: {
user: 1,
tweet: 1
}
}
})
Innymi słowy, łącząc unikalne pola, łącząc je z podkreśleniem.
Z perspektywy czasu komunikat o błędzie trochę to wyjaśniał, ale nie zrozumiałem.