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.