首页 > 解决方案 > Nestjs 更新为其他字段返回 null,从而产生验证问题

问题描述

我正在研究 Nest.js CRUD。每个其他组件都工作正常,但是当我尝试更新一个字段时,更新会引发验证错误,说其他字段不能留空。我试图从服务文件中解决这个问题,但我仍然收到验证错误。我尽力以不同的方式对其进行调整,但没有任何反应。以下是我能够想出的。我不知道我做错了什么。

account.repository.ts

async updateAccount(
    id: string,
    updateAccountDto: UpdateAccountDto
  ): Promise<UpdateAccountDto> {
    let { bankName, accountName, accountNumber } = updateAccountDto;
    const account = this.findOneOrFail(id);
    const oldBankName = (await account).bankName;
    const oldAccountName = (await account).accountNumber;
    const oldAccountNumber = (await account).accountNumber;
    if (bankName === null) {
      bankName = oldBankName;
    }
    if (accountName === null) {
      accountName = oldAccountName;
    }
    if (accountNumber === null) {
      accountNumber = oldAccountNumber;
    }
    const query = this.createQueryBuilder('account');
    await query
      .update(Account)
      .set({ bankName, accountName, accountNumber })
      .where('account.id = :id', { id })
      .execute();
    return updateAccountDto;
  }

account.controller.ts

@Put('/update/:id/')
  updateAccount(@Param('id') id: string, @Body() uaDto: UADto) {
    return this.accountService.updateAccount(id, uaDto);
  }

account.service.ts

async updateAccount(id: string, updateAccountDto: UpdateAccountDto) {
    return this.accountRepository.updateAccount(id, updateAccountDto);
  }

帐户.dto

export class CreateAccountDto {
  @IsNotEmpty()
  accountName: string;

  @IsNotEmpty()
  accountNumber: string;

  @IsNotEmpty()
  bankName: string;
}

account.entity,ts

@Entity()
export class Account {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({ nullable: true })
  accountName: string;

  @Column({ nullable: true })
  accountNumber: string;

  @Column({ nullable: true })
  bankName: string;
}

标签: javascripttypescriptpostmannestjstypeorm

解决方案


推荐阅读