小编sko*_*pio的帖子

Prisma 如何仅更新 update() 中的部分模型字段

我有一个 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)

express prisma

12
推荐指数
1
解决办法
1万
查看次数

使用 WHERE 子句创建递归视图

我正在尝试为递归查询创建一个视图,并使用带有 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)

postgresql recursion family-tree sql-view supabase

3
推荐指数
1
解决办法
171
查看次数