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