Narazil jsem na problém s Prismou, kvůli kterému jsem ztratil trochu času, takže napíšu, jak jsem to vyřešil.
Model neměl id
pole označené jako @id
tak jsem přidal @@unique()
říct user
a tweet
, společně definovali unique
omezit.
model Like {
user Int
tweet Int
createdAt DateTime @default(now())
@@unique([user, tweet])
}
To znamená, že nemůžeme mít více než 1 stejný záznam (user, tweet)
záznamy.
Když jsem se pokusil smazat záznam pomocí
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
Objeví se chybová zpráva:
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
}
Co jsem musel udělat, bylo změnit
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
do
await prisma.like.delete({
where: {
user_tweet: {
user: 1,
tweet: 1
}
}
})
Jinými slovy, kombinování jedinečných polí, která je zřetězují, s podtržítkem.
Při zpětném pohledu to chybová zpráva tak nějak vysvětlovala, ale nepochopil jsem to.