при использовании typeORM ?
Смотрю в доку, там написано:
Using decorators to control the transaction (@Transaction() and @TransactionManager()) is not recommended.
Окей. А какие декораторы можно использовать? Есть вроде пакет typeorm-transactional-cls-hooked, он вроде даже живой, но на cls-hooked, когда в ноде уже давно имеется свой async local storage. Можете подсказать пожалуйста, есть ли какие-нибудь пакеты, которые бы нормально работали с нативным нодовский ALS (пакет nestjs-typeorm-als какой-то достаточно сыроватый и не понятно, готов он к продакшену или нет) и почему не советуют юзать нативные декораторы от typeorm?
Я делаю так, сейчас может более опытные ребята подтянутся) const queryRunner = this.connection.createQueryRunner(); await queryRunner.connect(); await queryRunner.startTransaction(); try { //transaction query } catch (err) { await queryRunner.rollbackTransaction(); //error logic } finally { await queryRunner.release(); }
ну с таким подходом все просто и понятно. Но тогда приходится писать бойлерплэйт в виде роллбэков и прочего. Гораздо проще повесить на endpoint декоратор и все, что в этом эндпоинте будет происходить, по умолчанию будет транзацией.
Обсуждают сегодня