Как при транзакции указать при этих сохранениях в какие таблицы сохранять?
Имею ввиду
createQueryBuilder
save
.
const queryRunner = this.dataSource.createQueryRunner();
await queryRunner.connect();
await queryRunner.startTransaction();
try {
const passwordHah = await this.generatePasswordHash(dto.password);
const user = await queryRunner.manager
.createQueryBuilder()
.update({ id: userId, password: passwordHah })
.where('id = :userId', { userId })
.returning('*')
.updateEntity(true)
.execute();
const r = await queryRunner.manager.save({
user: { id: userId },
});
console.log(user, r, 'res');
await queryRunner.commitTransaction();
}
Если делаю так, то выдаёт ошибку:
const User = new UserEntity();
const user = await queryRunner.manager
.getRepository(User)
.createQueryBuilder()
.update({ id: userId, password: passwordHah })
.where('id = :userId', { userId })
.returning('*')
.updateEntity(true)
.execute();
Argument of type 'UserEntity' is not assignable to parameter of type 'EntityTarget<ObjectLiteral>'.
Вопрос мастерам:
Если сохранять/обновлять/удалять не через
await queryRunner.manager
, как показано в доке, а делать это, как обычно через
.createQueryBuilder()
или
.save/.update
методы, но внутри транзакции, это будет приводить к откату в при ошибке в одном из методов?