Documentation / @andrew_l/mongo-transaction / withTransactionControlled
Function: withTransactionControlled() ​
withTransactionControlled<
T
,K
,Args
>(fn
):TransactionControlled
<Awaited
<T
>,K
,Args
>
Wraps a function and returns a TransactionControlled
interface, allowing manual control over transaction commit and rollback operations.
This provides finer-grained control over the transaction lifecycle, enabling users to explicitly commit or rollback a transaction based on custom logic. It's especially useful in scenarios where transactional state or conditions need to be externally determined.
Type Parameters ​
T ​
T
K ​
K
= any
Args ​
Args
extends any
[] = any
[]
Parameters ​
fn ​
(this
, ...args
) => T
Returns ​
TransactionControlled
<Awaited
<T
>, K
, Args
>
Example ​
ts
const t = withTransactionControlled(async (userId) => {
await useTransactionEffect(async () => {
await db.users.updateById(userId, { premium: true });
return () => db.users.updateById(userId, { premium: false })
});
const user = await db.users.findById(userId);
return user;
});
await t.run();
// Remove premium when no subscriptions
if (t.result.activeSubscriptions > 0) {
await t.commit();
} else {
await t.rollback();
}