一个灵活可扩展的odejs的mogodb事务处理包,支持出错回滚,事务锁,单文档级锁,ODM无关。
import mogoTx from 'mogo-tx'import createMogoModel from 'mogo-tx/lib/implemets/create-mogo-model'import createMogoLock from 'mogo-tx/lib/implemets/create-mogo-lock'cost ruTx = mogoTx({ createModel: createMogoModel({ db: ativeDb }), createLock: createMogoLock({ db: ativeDb, wait: true }), // wait is true: wait util curret release is release istead of throw a error})await ruTx('some_trasfer', asyc tx => { cost TxAccouts = tx.wrap('accouts') cost acc1 = await TxAccouts.fidOe({ame: 'u1'}) cost acc2 = await TxAccouts.fidOe({ame: 'u2'}) await TxAccouts.fidOeAdUpdate({ ame: 'u1', }, { $set: { moey: acc1.moey - 100, }, }) throw ew Error('Some error cause auto rollback!') await TxAccouts.fidOeAdUpdate({ ame: 'u2', }, { $set: { moey: acc2.moey + 100, }, })})点击空白处退出提示
评论