方式二 显式 commit rollback
UserController
@Post()
async create(
@Body() data: { [key: string]: any }
) {
return this.userService.create(data)
}
UserService
通过getConnection()
建立连接
通过connection.createQueryRunner
获取运行器
通过queryRunner.connect()
建立连接
通过queryRunner.startTransaction()
开始事务
成功提交事务commitTransaction()
,失败回滚事务rollbackTransaction()
async create(data: Extract<CreateUserDto, CreateUserExtendDto>) {
const { name, password, email, mobile, gender, qq, address } = data
const connection = getConnection()
const queryRunner = connection.createQueryRunner()
await queryRunner.connect()
await queryRunner.startTransaction()
try {
const user = await queryRunner.manager.insert<UserEntity>(UserEntity, {
name,
password,
email,
mobile,
gender
})
const userId = user.identifiers[0].u=id
await queryRunner.manager.insert<UserExtendEntity>(UserExtendEntity, {
userId,
qq,
address
})
await queryRunner.commitTransaction()
return "创建成功"
} catch (e) {
await queryRunner.rollbackTransaction()
throw new BadRequestException("创建失败")
}
}