我在使用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
}
}
})
换句话说,把唯一的字段与下划线连接起来。
现在回想起来,这条错误信息有点像在解释这个问题,但我没有理解它。