ejoy-oplog
TypeScript icon, indicating that this package has built-in type declarations

3.0.0 • Public • Published

Installation

$ npm install ejoy-oplog

Configure MongoDB with replica set

You need to configure your MongoDB instance (local instance) to have access to the oplog, here are some quick steps on how to do so:

  1. Shutdown your existing mongo instance if its running.

  2. Restart the instance. Use the --replSet option to specify the name of the replica set.

$ sudo mongod --replSet rs0
  1. Connect to the mongo instance by executing mongo in your terminal:
$ mongo
  1. In the mongo shell run rs.initiate() to initiate the new replica set:
> rs.initiate()

Once it is initiated then you are ready to start using ejoy-oplog.

And here is the official MongoDB documentation if you need additional help on MongoDB replica set.

Usage

import MongoOplog from 'ejoy-oplog'
const oplog = MongoOplog('mongodb://127.0.0.1:27017/local', { ns: 'test.posts' })

oplog.tail();

oplog.on('op', data => {
  console.log(data);
});

oplog.on('insert', doc => {
  console.log(doc);
});

oplog.on('update', doc => {
  console.log(doc);
});

oplog.on('delete', doc => {
  console.log(doc.o._id);
});

oplog.on('error', error => {
  console.log(error);
});

oplog.on('end', () => {
  console.log('Stream ended');
});

oplog.stop(() => {
  console.log('server stopped');
});

API

MongoOplog(uri, [options])

  • uri: Valid MongoDB uri or a MongoDB server instance.
  • options MongoDB connection options.

oplog.tail([fn])

Start tailing. This method support both Promise and callback.

oplog.tail().then(() => {
  console.log('tailing started')
}).catch(err => console.error(err))

// or with async/await
async function tail() {
  try {
    await oplog.tail()
    console.log('tailing started')
  } catch (err) {
    console.log(err)
  }
}

oplog.stop([fn])

Stop tailing and disconnect from server. This method support both Promise and callback.

oplog.stop().then(() => {
  console.log('tailing stopped')
}).catch(err => console.error(err))

// or with async/await
async function stop() {
  try {
    await oplog.stop()
    console.log('tailing stopped')
  } catch (err) {
    console.log(err)
  }
}

oplog.destroy([fn])

Destroy the mongo-oplog object by stop tailing and disconnecting from server. This method support both Promise and callback.

oplog.destroy.then(() => {
  console.log('destroyed')
}).catch(err => console.error(err))

// or with async/await
async function destroy() {
  try {
    await oplog.destroy()
    console.log('destroyed')
  } catch (err) {
    console.log(err)
  }
}

oplog.ignore

Pause and resume oplog events.

oplog.ignore = true; // to pause
oplog.ignore = false // to resume

oplog.filter(ns)

Create and return a filter object.

const filter = oplog.filter('*.posts')
filter.on('op', fn)
oplog.tail()

filter.destroy()

Destroy filter object.

filter.destroy()

filter.ignore

Pause and resume filter events.

filter.ignore = true; // to pause
filter.ignore = false // to resume

events

Events supported by oplog and filter;

  • op: All bellow operations (oplog/filter).
  • insert: Document insert (oplog/filter).
  • update: Document update (oplog/filter).
  • delete: Document delete (oplog/filter).
  • end: Cursor stream ended (oplog).
  • error: Error (oplog).

Run tests

Configure MongoDB for active oplog, once this is done then you can run the test:

$ npm install
$ npm run test

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 3.0.0
    3
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 3.0.0
    3
  • 2.0.3
    0
  • 2.0.2
    0

Package Sidebar

Install

npm i ejoy-oplog

Weekly Downloads

3

Version

3.0.0

License

MIT

Unpacked Size

33.8 kB

Total Files

12

Last publish

Collaborators

  • toanz