TypeORM:如何在 queryRunner 中运行 SELECT...FOR UPDATE?

Tra*_*Son 3 typeorm

我怎么能跑SELECT... FOR UPDATE进去queryRunner 呢?我看到queryRunner只能访问的TypeORM文档manager,我如何访问Repository锁定记录。例如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 -----------------");
Run Code Online (Sandbox Code Playgroud)

欢迎任何建议!

Tra*_*Son 5

是的,实际上我们可以Repository从访问manager,问题解决了

        users = await queryRunner.manager
          .getRepository(User)
          .createQueryBuilder("user")
          .useTransaction(true)
          .setLock("pessimistic_write")
          .where("user.status = :status", { status: status })
          .getMany();
Run Code Online (Sandbox Code Playgroud)