【发布时间】:2020-04-26 14:01:59
【问题描述】:
我有一个使用 TypeORM 的 NodeJS 后端服务器,每次更新实体时我都需要执行插入操作。所以我的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 监听器函数中访问所述事务管理器?
【问题讨论】:
标签: typescript typeorm