我有一个 Prisma 模型,可以说有 10 个字段。考虑用户模型,包括名字、姓氏、地址、电子邮件、电话、手机、年龄等。
我正在尝试为此编写一个更新方法,大多数时候我只想更新部分或仅更新其中 1 个字段。不是整个用户。如果该字段未随请求一起发送,我想保留数据库中的值。
对此最好的做法是什么?我应该检查 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,
},
})
Run Code Online (Sandbox Code Playgroud)
或者我应该检查 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,
})
Run Code Online (Sandbox Code Playgroud)
Tas*_*mam 17
Prisma 中使用该undefined属性来完成您想要实现的目标。
基本上,当分配一个字段时,undefined意味着忽略它并且对该字段不执行任何操作。
您可以在相关文章null和undefined文档中了解更多相关信息。
您的更新查询应如下所示:
// Assuming email, firstname and address fields exist in your prisma schema.
const updateUser = await prisma.user.update({
where: {
email: 'viola@prisma.io',
},
data: {
// If req.firstname is falsy, then return undefined, otherwise return it's value
firstname: req.firstname || undefined,
email: req.email || undefined,
address: req.address || undefined
},
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14073 次 |
| 最近记录: |