Prisma 如何仅更新 update() 中的某些模型字段
Prisma how can I update only some of the models fields in update()
我有一个 Prisma 模型,假设有 10 个字段。
考虑具有名字、姓氏、地址、电子邮件、phone、手机、年龄等的用户模型
我正在尝试为此编写一个更新方法,其中我大多数时候只想更新部分或仅更新其中的一个字段。不是整个用户。如果该字段未随请求一起发送,我想保留数据库中的值。
最佳做法是什么。我应该检查所有字段都在 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,
})
Prisma 中使用 undefined
属性 来完成您想要实现的目标。基本上,当一个字段被分配 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 模型,假设有 10 个字段。 考虑具有名字、姓氏、地址、电子邮件、phone、手机、年龄等的用户模型
我正在尝试为此编写一个更新方法,其中我大多数时候只想更新部分或仅更新其中的一个字段。不是整个用户。如果该字段未随请求一起发送,我想保留数据库中的值。
最佳做法是什么。我应该检查所有字段都在 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,
})
Prisma 中使用 undefined
属性 来完成您想要实现的目标。基本上,当一个字段被分配 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
},
})