TypeORM - 只更新提供的值,其余的保持原样

TypeORM - Update only values that are provided and leave the rest as they are

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

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

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

现在我的前端向我的 API 发送一个 post 请求,其中包含一个对象,例如 { name: Joe, age: 16 }

我如何告诉 orm 类型用名称“Joe”更新数据库中的 EntityA,并且仅更新提供的与当前存储在数据库中的值(在本例中为年龄)不同的值?

我遇到了同样的问题,尤其是 nullable 列中的 undefined 值。 以my project's Product repository更新函数为起点。 我使用条件 spread syntax (...) to "build" the query dynamically. See 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,则不会更新它,因为它不在更新对象中。