如何解决在 Prisma 中更新多对多关系
我正在尝试找出实现以下架构的 upsert/更新的正确方法:
model Post {
author String @Id
lastUpdated DateTime @default(now())
categories Category[]
}
model Category {
id Int @id
posts Post[]
}
这是我想要做的。获取附加了类别 ID 的帖子并将其插入到上面的架构中。
出现以下命令插入帖子
const post = await prisma.post.upsert({
where:{
author: 'TK'
},update:{
lastUpdated: new Date()
},create: {
author: 'TK'
}})
我面临的挑战是如何更新类别。我将获得类似 1,2,3 的 Catogories 列表,如果它们不存在,我需要将其插入到类别表中并将帖子添加到其中。如果该类别确实存在,我需要使用上面插入的帖子更新记录,保留所有附加的帖子。
如果我能指出正确的方向,我将不胜感激。
解决方法
对于模型,可以简化如下,因为 Prisma 支持 @updatedAt
会自动更新列:
model Post {
author String @id
lastUpdated DateTime @updatedAt
categories Category[]
}
model Category {
id Int @id
posts Post[]
}
至于查询,它看起来像这样:
const categories = [
{ create: { id: 1 },where: { id: 1 } },{ create: { id: 2 },where: { id: 2 } },]
await db.post.upsert({
where: { author: 'author' },create: {
author: 'author',categories: {
connectOrCreate: categories,},update: {
categories: { connectOrCreate: categories },})
connectOrCreate 将创建(如果不存在)并将类别添加到帖子中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。