Prisma 如何仅更新 update() 中的某些模型字段
Posted
技术标签:
【中文标题】Prisma 如何仅更新 update() 中的某些模型字段【英文标题】:Prisma how can I update only some of the models fields in update() 【发布时间】:2021-11-30 04:54:34 【问题描述】:我有一个 Prisma 模型,假设有 10 个字段。 考虑包含名字、姓氏、地址、电子邮件、电话、手机、年龄等的用户模型。
我正在尝试为此编写一个更新方法,大多数时候我只想更新一些或只有一个字段。不是整个用户。如果该字段未随请求一起发送,我想保留数据库中的值。
最好的做法是什么。我应该检查所有字段都在 req 对象中吗? 我怎么能为 prisma 写这个?
我希望它如何工作的示例:
req = firstname: 'Bob', email: 'bob@bob.bob', etc
const updateUser = await prisma.user.update(
where:
email: 'viola@prisma.io',
,
data:
req.firstname ? (email: req.firstname) : null,
req.email ? (email: req.email) : null,
req.address? (email: req.address) : null,
,
)
或者我应该检查 req 中存在的值并在 10 个版本中构建数据对象:
let customDataObject =
if (req.firstname)
customDataObject.firstname = req.firstname
if (req.email)
customDataObject.email= req.email
const updateUser = await prisma.user.update(
where:
email: 'viola@prisma.io',
,
data: customDataObject,
)
【问题讨论】:
【参考方案1】:undefined
属性在 Prisma 中用于完成您想要实现的目标。基本上,当一个字段被分配undefined
时,它意味着忽略这个并且对该字段不做任何事情。您可以在文档中有关 null
and undefined
的文章中了解更多信息。
这就是您的更新查询的样子。
// assuming email, firstname and address fields exist in your prisma schema.
const updateUser = await prisma.user.update(
where:
email: 'viola@prisma.io',
,
data:
firstname: req.firstname || undefined, // if req.firstname is falsy, then return undefined, otherwise return it's value.
email: req.email || undefined,
address: req.address || undefined
,
)
【讨论】:
以上是关于Prisma 如何仅更新 update() 中的某些模型字段的主要内容,如果未能解决你的问题,请参考以下文章