forked from odavid/typeorm-transactional-cls-hooked
-
Notifications
You must be signed in to change notification settings - Fork 36
Open
Description
original:
try {
await defaultManager.transaction(async mgr => {
await mgr.withRepository(repo).insert({ name: "user1" });
//throw new Error(`abort`);
await mgr.withRepository(repo).insert({ name: "user2" });
try {
await mgr.transaction(async mgr2 => {
await mgr2.withRepository(repo).insert({ name: "user3" });
//throw new Error(`abort2`);
await mgr2.withRepository(repo).insert({ name: "user4" });
});
}
catch (err) {
// ...
}
throw new Error(`abort3`)
});
}
catch (err) {
// ...
}
with typeorm-transactional:
try {
await runInTransaction(async () => {
await repo.insert({ name: "user1" });
//throw new Error(`abort`);
await repo.insert({ name: "user2" });
try {
await runInTransaction(async () => {
await repo.insert({ name: "user3" });
//throw new Error(`abort2`);
await repo.insert({ name: "user4" });
},{ propagation: Propagation.NESTED });
}
catch (err) {
// ...
}
throw new Error(`abort3`)
});
}
catch (err) {
// ...
}
When using typeorm-transactional test case abort3 does create user3 and user4 which is not desired.
(other cases work as expected)
Metadata
Metadata
Assignees
Labels
No labels