ejoy-oplog v3.0.0
Installation
$ npm install ejoy-oplogConfigure 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:
Shutdown your existing mongo instance if its running.
Restart the instance. Use the
--replSetoption to specify the name of the replica set.
$ sudo mongod --replSet rs0- Connect to the mongo instance by executing
mongoin your terminal:
$ mongo- 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.optionsMongoDB 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 resumeoplog.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 resumeevents
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