У меня есть NodeJS внутренний сервер, использующий TypeORM, и мне нужно выполнять вставку каждый раз, когда сущность обновляется. Итак, у меня есть следующий код в моем BaseModel
классе:
abstract class BaseModel {
// ...
@BeforeUpdate()
private async InsertBeforeUpdate() {
let entToSave: BaseModel;
// Create the entity that I want to insert
await getManager().save(entToSave);
}
}
Затем в моем DAL:
const saveUser = (user: User) => {
return new Promise((resolve, reject) => {
getManager().transaction(async manager => {
manager
.save(user)
.then(() => {
resolve('yay');
})
.catch(() => {
reject(new Error('boo'));
});
});
});
};
Однако это вызывает проблему. Если операция сохранения завершается неудачно и обещание saveUser отклоняется, вставка, выполненная в @BeforeUpdate, не существует в той же транзакции и будет сохранена в БД.
Как получить доступ к указанному диспетчеру транзакций в @BeforeUpdate функция слушателя?