Tôi gặp sự cố với Prisma khiến tôi hơi mất thời gian, vì vậy tôi sẽ viết cách giải quyết vấn đề đó.
Mô hình không có id
trường được đánh dấu là @id
vì vậy tôi đã thêm một @@unique()
để nói user
và tweet
cùng nhau, đã xác định unique
ràng buộc.
model Like {
user Int
tweet Int
createdAt DateTime @default(now())
@@unique([user, tweet])
}
Điều này có nghĩa là chúng tôi không thể có nhiều hơn 1 mục giống nhau của (user, tweet)
mục.
Khi tôi cố gắng xóa một mục nhập bằng
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
Tôi gặp một thông báo lỗi:
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
}
Những gì tôi phải làm là thay đổi
await prisma.like.delete({
where: {
user: 1,
tweet: 1
}
})
đến
await prisma.like.delete({
where: {
user_tweet: {
user: 1,
tweet: 1
}
}
})
Nói cách khác, kết hợp các trường duy nhất nối chúng bằng dấu gạch dưới.
Khi nhìn lại, thông báo lỗi giống như giải thích điều này, nhưng tôi không hiểu.