node-async-rollback

0.0.1 • Public • Published

async-rollback

A simple util to make rollback easy in complex nested promises.

Every now and then we have a problem wherein db/micro service call depends on each other For eg.

 
function updateSomeDoc2() {
  return call() // call some async api/db call
}
 
function updateSomeDoc3() {
  return call() // call some async api/db call
}
 
updateSomeDoc1().then(updateSomeDoc2).then(updateSomeDoc3)

This seems fine but over here we forgot if updateSomeDoc3 fails we need to revert updateSomeDoc2 changes as well as updateSomeDoc1 update, this library provides a much better interface to solve this issue.

Features

  • Can be used to nest multiple update/create call which depend on each other
  • Can be used to rollback update/create calls using update/delete call
  • transaction function can set what it needs to give child just like async waterfall
  • rollback receives own params and it's transaction response.

Example

$ npm i
cd examples
$ node basic   // For basic nest calls
$ node rollback   // know how rollback happens
$ node rollbackWithTransaction // rollback using transaction response

Installation

npm install async-rollback --save

Usage

import asyncRollback from 'async-rollback';
 
const updateObj = [
  {
    transaction: {funcToExec: () => Promise.resolve(), params: {} },
    rollback: {funcToExec: () => Promise.resolve(), params: {}}
  },
  {
    transaction: {funcToExec: () => Promise.reject(), params: {} },
    rollback: {funcToExec: () => Promise.resolve(), params: {}}
  }
];
 
asyncRollback(updateObj).then(onSuccess).catch(onError);
//...

Contributing

If you'd like to see something added or changed to this module please open a new GitHub issue. Pull requests are always welcome.

Readme

Keywords

none

Package Sidebar

Install

npm i node-async-rollback

Weekly Downloads

0

Version

0.0.1

License

ISC

Unpacked Size

76.9 kB

Total Files

12

Last publish

Collaborators

  • priyankbht