mongo-tx 介绍
一个灵活可扩展的 nodejs 的 mongodb 事务处理包,支持出错回滚,事务锁,单文档级锁,ODM 无关。
import mongoTx from 'mongo-tx' import createMongoModel from 'mongo-tx/lib/implements/create-mongo-model' import createMonGolock from 'mongo-tx/lib/implements/create-mongo-lock' const runTx = mongoTx({ createModel: createMongoModel({ db: nativeDb }), createLock: createMonGolock({ db: nativeDb, wait: true }), // wait is true: wait until current release is release instead of throw an error }) await runTx('some_transfer', async tx => { const TxAccounts = tx.wrap('accounts') const acc1 = await TxAccounts.findOne({name: 'u1'}) const acc2 = await TxAccounts.findOne({name: 'u2'}) await TxAccounts.findOneAndUpdate({ name: 'u1', }, { $set: { money: acc1.money - 100, }, }) throw new Error('Some error cause auto rollback!') await TxAccounts.findOneAndUpdate({ name: 'u2', }, { $set: { money: acc2.money + 100, }, }) })
mongo-tx 官网
https://git.oschina.net/zane_young/mongo-tx
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。