Prisma 有没有办法在一次调用中执行 createOrDelete ?

问题描述

我有一个基本上将用户映射到问题(Jira 问题)的关系表,我正在尝试找到一种干净的方法来管理和更新这些关系,并使用 PUT 调用。我暂时想出了一个可行的解决方案,但我觉得 prisma 2 必须有更好的方法

所以当我从前端发出 PUT 请求时,它返回一个用户 ID 数组 const userIds = [ 1 ] 例如。

我想要发生的是,当我调用这个 PUT 请求时,我可以将用户 ID 数组传递给它,然后如果用户 ID 不存在于 userids 数组中,prisma删除任何现有的数据库条目,并且如果数据库中不存在任何新条目,请添加它们。

一个简单的例子是:

这似乎是一些非常简单的功能,但我现在可以解决这个问题的唯一方法删除与问题相关的所有记录(Jira Ticket),然后为存在于userIds 数组。这不是很好的性能(超出原则),并且当我的应用变得更复杂时可能会导致问题。

这是我现在如何做的代码

  const oldissue = await prisma.issue.findUnique({
    where: { id: +req.params.issueId },include: { userIds: true }
  })

  try {
    await prisma.issueUsersUser.deleteMany({
      where: { issueId: oldissue?.id }
    })

    const issue = await prisma.issue.update({
      where: { id: +req.params.issueId },data: {
        ...data,userIds: {
          createMany: {
            data: userIds.map((userId: string) => ({ userId }))
          },}
      }
    })

    return res.json(issue)
  }
  ...

我只是想知道是否有一种方法可以在不需要删除该问题的每条记录的情况下执行相同的功能。理想情况下,它只会删除数组中缺失的记录,只添加尚不存在的记录。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)