我们应该如何处理 TypeORM + Nest 服务器中的多个重复字段?
特别是 TypeORM 实体中的用户名和/或电子邮件字段重复约束?
最好在同一个 try/catch 方法或错误处理程序中处理这些字段的重复。
首先,NestJs 会自动捕获所有异常,因此无需在 Nest 应用程序内显式使用 try-catch 块,除非您调用第三方 API,您可以在here阅读更多相关信息。因此,即使不使用 try catch 块嵌套也会捕获数据库抛出的所有异常。
第二,这仍然是一个不好的做法,因为最好处理您期望数据库抛出错误的所有情况。因为,在这里您知道如果插入重复数据,数据库将抛出错误,然后在数据到达数据库之前处理这些情况。我的意思是:
示例:创建新的用户 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);
}