Ich bin auf ein Problem mit Prisma gestoßen, durch das ich etwas Zeit verloren habe, also werde ich schreiben, wie ich es gelöst habe.
Das Modell hatte keine id
Feld markiert als @id
also habe ich einen @@unique()
hinzugefügt um user
zu sagen und tweet
, definierte zusammen den unique
beschränken.
model Like {
user Int
tweet Int
createdAt DateTime @default(now())
@@unique([user, tweet])
}
Das bedeutet, dass wir nicht mehr als 1 gleiche Einträge von (user, tweet)
haben können Einträge.
Als ich versuchte, einen Eintrag mit
zu löschenawait prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
Ich erhalte eine Fehlermeldung:
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
}
Was ich tun musste, war mich zu ändern
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
zu
await prisma.like.delete({
where: {
user_tweet: {
user: 1,
tweet: 1
}
}
})
Mit anderen Worten, die eindeutigen Felder zu kombinieren und mit einem Unterstrich zu verketten.
Im Nachhinein hat die Fehlermeldung das erklärt, aber ich habe es nicht verstanden.