node.js - How to emit event in mongoose middleware? -


i want emit event when new blog saved

blog.post('save',function(blog){     this.emit('newblog',blog) }) 

and somewhere else in project app.js can listen event

eventemitter  = require('events').eventemitter; emitter = new eventemitter();  emitter.on('newblog',function(blog){     console.log(blog); }) 

how this?

the way event emitter works have use same event emitter object listen on used emit. need this:

to share among different parts of project should create module out of , require wherever needed.

my-event.js:

var eventemitter = new require('events').eventemitter(); module.exports = eventemitter;  

then require eventemitter wherever want use it

blog.js:

var myevent = require('../my-event'); blog.post('save',function(blog){     myevent.emit('newblog', blog); }); 

app.js:

var myevent = require('./my-event'); myevent.on('newblog', console.log); 

if don't want go through trouble of creating , requiring own module, can use global process eventemitter.

anywhere:

process.on('my-custom-event', mycustomhandler); 

anywhere-else:

process.emit('my-custom-event', data); 

although fair warning: you're polluting global scope. if other module doing same , using same event names have conflict may surface in unexpected manner , harder debug.


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -