在 Prisma 中更新多对多关系

TKT*_*hie 6 prisma

我正在尝试找出实现以下架构的更新插入/更新的正确方法:

model Post {
  author      String     @Id
  lastUpdated DateTime   @default(now())
  categories  Category[]
}

model Category {
  id     Int     @id
  posts  Post[]
}
Run Code Online (Sandbox Code Playgroud)

这就是我想做的。获取附有类别 ID 的帖子并将其插入到上面的架构中。

出现以下命令来插入帖子

const post = await prisma.post.upsert({
  where:{
    author: 'TK'
  },
  update:{
    lastUpdated: new Date()
  },
  create: {
    author: 'TK'
  }
})
Run Code Online (Sandbox Code Playgroud)

我的挑战是如何更新类别。我将获得类似 1、2、3 的类别列表,如果它们不存在,我需要将其插入类别表中并将帖子添加到其中。如果该类别确实存在,我需要使用上面插入的帖子更新记录,保留所有附加帖子。

如果我能指出正确的方向,我将不胜感激。

Rya*_*yan 11

对于模型,可以简化如下,Prisma支持@updatedAt自动更新列:

model Post {
  author      String     @id
  lastUpdated DateTime   @updatedAt
  categories  Category[]
}

model Category {
  id    Int    @id
  posts Post[]
}
Run Code Online (Sandbox Code Playgroud)

至于查询,它看起来像这样:

model Post {
  author      String     @id
  lastUpdated DateTime   @updatedAt
  categories  Category[]
}

model Category {
  id    Int    @id
  posts Post[]
}
Run Code Online (Sandbox Code Playgroud)

connectOrCreate将创建(如果不存在)并将类别添加到帖子中。