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:
-
Shutdown your existing mongo instance if its running.
-
Restart the instance. Use the --replSet
option to specify the name of the replica set.
$ sudo mongod --replSet rs0
- Connect to the mongo instance by executing
mongo
in 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.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))
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))
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))
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;
oplog.ignore = false
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;
filter.ignore = false
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