我有一个 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: …Run Code Online (Sandbox Code Playgroud) 我正在尝试为递归查询创建一个视图,并使用带有 where 子句的视图来设置起点。
CREATE TABLE dog (
id int,
name varchar(50)
)
CREATE TABLE dog_parent (
id int,
dog_id int,
parent_id int,
)
Run Code Online (Sandbox Code Playgroud)
这个递归查询返回我期望的结果
WITH recursive Ancestor_Tree AS (
SELECT
mp.dog_id,
mp.parent_id
FROM
dog_parent mp
WHERE mp.dog_id = 26
UNION ALL
SELECT
mp.dog_id,
mp.parent_id
FROM
dog_parent mp,
Ancestor_Tree ft
WHERE mp.dog_id = ft.parent_id
)
SELECT
ft.dog_id,
mm.name AS Member,
ft.parent_id,
mp.name AS Parent
FROM Ancestor_Tree ft
INNER JOIN dog mm
ON mm.id = ft.dog_id
INNER JOIN dog mp
ON mp.id …Run Code Online (Sandbox Code Playgroud)