How can I run SELECT... FOR UPDATE inside queryRunner ?
I see the TypeORM doc that queryRunner can only access manager, how I can access Repository to lock record. For example queryRunner.getRepository(User).setLock("pessimistic_write").....
console.log("----------------- START TRANSACTION -----------------");
const queryRunner = connection.createQueryRunner();
// establish real database connection using our new query runner
await queryRunner.connect();
await queryRunner.startTransaction();
try {
// `SELECT....FOR UPDATE`
// Want to .setLock("pessimistic_write")
// commit transaction now:
await queryRunner.commitTransaction();
} 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();
}
console.log("----------------- FINISH TRANSACTION -----------------");
Any advice is welcome!
Yupp, actually we can access Repository from manager, problem solved 👍
users = await queryRunner.manager
.getRepository(User)
.createQueryBuilder("user")
.useTransaction(true)
.setLock("pessimistic_write")
.where("user.status = :status", { status: status })
.getMany();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With