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
Post a Comment