mongoose-acid

0.14.0 • Public • Published

mongoose-acid

Build Status

NPM

mongoose-acid

😎 mongoose transaction helper

prompt

if you are using mongodb's multi-document transaction capabilities, your version of mongodb needs to be larger than 4.0, and you need a replication set for transactions to work, in mongodb4.2, multi-document transactions will be supported on sharding

install

npm i mongoose-acid mongoose -S

required

  • nodejs >= 7.6
  • mongoose >= 5.2
  • mongodb >= 4.0

usage

normal

const Acid = require('mongoose-acid')
await Acid(async function (session) {
    // if you set context then this === context
    await People.findOneAndUpdate({ name: 'Acid' },{ $inc: { balance: 30 } },{ session })
    await Account.findOneAndUpdate({ name: 'Blank'},{ $inc: { balance: -30 } },{ session })
}, context)

in koa

const Acid = require('mongoose-acid')
const app = new Koa()
app.use(Acid.middleware())
app.use(async (ctx) => {
    await ctx.acid(async function(session) {
      // this === ctx
    })
})

session option position

  • Model.create([], { session })
  • Model.deleteOne(condition, { session })
  • Model.deleteMany(condition, { session })
  • Model.updateOne(condition, update, { session })
  • Model.updateMany(condition, update, { session })
  • Model.update(condition, update, { session })
  • Model.insertMany(docs, { session })
  • Model.findById(id, selects, { session })
  • Model.findByIdAndUpdate(id, update, { session })
  • Model.findByIdAndRemove(id, { session })
  • Model.findByIdAndDelete(id, { session })
  • Model.findOne(condition, selects, { session })
  • Model.findOneAndUpdate(condition, update, { session })
  • Model.findOneAndRemove(condition, { session })
  • Model.findOneAndDelete(condition, { session })
  • model.save({ session })
  • model.remove({ session })

debug

Acid.set('debug', true)

notice

  • The collection cannot be created in a transaction and will report an error, so you need to create the collection before using the mongoose and mongodb transaction functions
  • Note that if the model is returned by a query with the session option set, you do not need to set it again
  • Note that the first argument to the Model.create method must be an array, and the second argument can set the session option

test

npm test

Dependencies (0)

    Dev Dependencies (4)

    Package Sidebar

    Install

    npm i mongoose-acid

    Weekly Downloads

    3

    Version

    0.14.0

    License

    MIT

    Unpacked Size

    65 kB

    Total Files

    11

    Last publish

    Collaborators

    • dtboy