NestJS + TypeORM Transaction

vincentjang

Vincent Jang

Posted on June 16, 2022

NestJS + TypeORM Transaction

Few weeks ago, I started a new personal project for daily-pattern, I encountered a problem about transaction. It was a severe problem for me. I can't remember a specific version of Typeorm is, but they deprecated a getConnection() method in new version I installed. So I choiced downgrade Typeorm version and use the way I used to.

But, my used way has a tiny(but severe) trouble,
let see a code below.

const queryRunner = getConnection().createQueryRunner();
await queryRunner.connect();
await queryRunner.startTransaction();

try {
  // ...
  await this.modelRepository.save(newOBj);
  await queryRunner.commitTransaction();
} catch(e) {
  // error control logic
}

Enter fullscreen mode Exit fullscreen mode

Can you see a problem?
It was totally stupid.
I thought that QueryRunner observes the DB's CUD action and makes it a transaction when it occurs.

But, It was not.
So I change code like this.

const queryRunner = getConnection().createQueryRunner();
await queryRunner.connect();
await queryRunner.startTransaction();

try {
  // ...
  await querRunner.manager.save(newObj);
  await queryRunner.commitTransaction();
} catch(e) {
  // error control logic
}

Enter fullscreen mode Exit fullscreen mode

It seems like, There is an object called manager in QueryRunner, and this object determines the table according to the model and makes it a transaction.

a new logic work properly, so I just want to note my mistake and improvement. For me, and for someone who having the same problem as me.

Thanks for reading.
Plz comment if you have more nice idea or solution.


Ref --
Cover Img ref : https://miro.medium.com/max/1400/1*GafbQWGfs0xDuH_A0z08wg.png

💖 💪 🙅 🚩
vincentjang
Vincent Jang

Posted on June 16, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

NestJS + TypeORM Transaction
nestjs NestJS + TypeORM Transaction

June 16, 2022