微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nestjs在进行由Typeorm管理的事务并在内部使用许多不同的方法时,我是否必须将queryRunner传递给所有这些方法?

如何解决Nestjs在进行由Typeorm管理的事务并在内部使用许多不同的方法时,我是否必须将queryRunner传递给所有这些方法?

我会详细说明。

让我们说说我有这个交易方法(它的代码不完整,但是足以说明这个想法):

    public async create(createuserDto: RegisterUserDto): Promise<UserEntity> {
        const queryRunner = this.connection.createqueryRunner();
        await queryRunner.connect();
        await queryRunner.startTransaction();
        try {
            const registerUserDeviceBody: IRegisterUserDevice = {
                deviceIP: createuserDto.deviceIP,deviceName: createuserDto.deviceName,deviceidentifier: createuserDto.deviceName,};
            const userDevice = await this.registerUserDevice(registerUserDeviceBody,queryRunner);
            await queryRunner.commitTransaction();
        } catch (err) {
            await queryRunner.rollbackTransaction();
            throw new HttpException(err.message,HttpStatus.BAD_REQUEST);
        } finally {
            await queryRunner.release();
        }
        return;
    }

据我所知,这里我将queryRunner作为参数传递给registerUserDevice方法是为了在一个DB连接中执行整个操作并避免DB锁定等。我对吗?而且我总是必须这样做吗?

之所以这样问,是因为我正在实现一个方法,该方法将使用一组较早实现的方法来创建自己的数据库连接(使用存储库模式),所以我试图找出原因什么以及如何重构该代码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。