【问题标题】:TypeORM - Update only values that are provided and leave the rest as they areTypeORM - 只更新提供的值,其余的保持原样
【发布时间】:2021-11-18 18:56:56
【问题描述】:

我将如何使用 TypeORM 来解决这个问题?

我有一个实体,我们称之为 EntityA。

我的数据库中有 1 个 EntityA,名称 = Joe,年龄 = 17

现在我的前端向我的 API 发送一个 post 请求,其对象类似于 { name: Joe, age: 16 }

我如何告诉 orm 类型更新数据库中名为“Joe”的 EntityA,并且只更新与当前存储在数据库中的值不同的值(在这种情况下为年龄)?

【问题讨论】:

    标签: nestjs typeorm


    【解决方案1】:

    我也遇到过同样的问题,尤其是 undefined 列中的 nullable 值。 以my project's Product repository 更新函数为起点。 我已经使用条件spread syntax (...) 来动态地“构建”查询。请参阅this 了解更多信息。

    async function update(id: string, user: User): Promise<User> {
        // Update
        await userRepository.update(id, {
          ...(user.name && { name: user.name }),
          ...(user.surname && { surname: user.surname }),
          ...(user.age && { age: user.age }),
        });
    
        // Return
        return this.repository.findOneOrFail(id);
      }
    

    仅更新user 中存在的列。例如:如果不存在 user.name,则不会更新它,因为它不在更新对象中。

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多