【发布时间】:2020-07-02 14:02:59
【问题描述】:
我有一个像这样使用 NestJS/Typeorm 的自定义存储库类:
import { Repository, EntityRepository, getConnection } from 'typeorm';
import { RefreshToken } from './refresh-token.entity';
import { User } from './user.entity';
import { InternalServerErrorException } from '@nestjs/common';
@EntityRepository(RefreshToken)
export class RefreshTokenRepository extends Repository<RefreshToken> {
async refreshToken({ token, user }: RefreshToken): Promise<RefreshToken> {
const connection = getConnection();
const queryRunner = connection.createQueryRunner();
// establish real database connection using our new query runner
await queryRunner.connect();
// lets now open a new transaction:
await queryRunner.startTransaction();
try {
// execute some operations on this transaction:
await queryRunner.manager.delete(RefreshToken, { token });
const refreshToken = await queryRunner.manager.save(
this.buildToken(user),
);
// commit transaction now:
await queryRunner.commitTransaction();
return refreshToken;
} catch (err) {
// since we have errors lets rollback changes we made
await queryRunner.rollbackTransaction();
} finally {
// you need to release query runner which is manually created:
await queryRunner.release();
}
}
}
请问有没有与我在refreshToken() 方法中所做的不同的方式来进行/建立交易?因为建立连接感觉很糟糕,而且不适合 NestJS 的工作方式。
谢谢。
【问题讨论】:
标签: typescript nestjs typeorm