Prisma:如何使用“where”更新非唯一字段?

7

在检查 Prisma ORM 的 update 方法的类型时,我发现只能为唯一字段包括 where 子句:

return this.prisma.publication.update({
    data,
    where: {id},
});

我很乐意将这个与身份验证结合起来,做出类似于以下的操作:
return this.prisma.publication.update({
    data,
    where: {id, owner: user.id}, <-- Authorisation
});

这是否可能使用Prisma完成,还是需要单独查询以检索实例?
3个回答

9
在这种情况下,您需要使用updateMany,因为您正在使用非唯一字段和唯一字段。

7
哇,那太糟糕了。所以即使您传递了唯一的参数并且知道只会更新一个/零个记录,您仍然需要执行updateMany操作。 - HomeIsWhereThePcIs

6
据称,从Prisma 4.5.0版本开始,有一个新功能允许您将非唯一字段添加到唯一where子句中,只要它包含至少一个唯一字段。
Prisma发布了4.5.0版本,详情请见此处
这是一个预览功能,为启用它,请在您的shcema.prisma文件中添加以下内容:
generator js {
  provider        = "prisma-client-js"
  previewFeatures = ["extendedWhereUnique"]
}

然后你的代码示例就会正常工作。
return this.prisma.publication.update({
  data,
  where: {id, owner: user.id},
});

0

我想知道那里的文档进展如何。它应该链接到为什么使用extendedWhereUnique,而不仅仅是存在权限检查。 - Liam Pillay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接