NestJS TypeORM 多错误处理用户名和电子邮件冲突

NestJS TypeORM multiple error handling username and email conflict

当我尝试更新用户名字段但此用户名已被占用时。以及我应该如何处理我的用户名重复。

第二个问题是尝试更新电子邮件字段,但此电子邮件已被占用。我应该如何处理重复的电子邮件?

当用户更新他们的帐户用户名和电子邮件归档时,这两个以相同的形式归档。 然后我抛出已经使用的特定字段。 我的问题是如何在同一个 catch 方法中处理这两种错误类型

First,NestJs 会自动捕获所有异常,因此无需在 nest 应用程序中显式使用 try-catch 块,除非您调用第三方 API,您可以阅读更多相关信息 here。所以,即使你不使用 try catch 块 nest 也会捕获数据库抛出的所有异常。

其次,这仍然是一个不好的做法,因为最好处理所有你希望数据库抛出错误的情况。因为,在这里您知道如果插入重复数据,数据库将抛出错误,然后在数据到达数据库之前处理这些情况。我的意思是:

  • 在插入之前检查该数据是否已经存在于数据库中。
  • 如果它已经存在,那么 return 错误请求异常。
  • 如果没有,则插入数据。

示例:创建新用户 API。

async createUser(createUserDto: CreateUserDto): Promise<CreateUserRO> {
    const { phone } = createUserDto;
    const existingUser = await this.userRepository.findOne({
      phone,
    });

    if (existingUser) {
      throw new HttpException(
        'Phone number already exists',
        HttpStatus.BAD_REQUEST,
      );
    }

    const user = new User(createUserDto);
    await this.userRepository.persistAndFlush(user);

    return new CreateUserRO(true, user.id);
}