node package manager



nsignal works with Models defined by developers from mongoose' model. nsignal gives developer the ability to run some functions when related object of Model has change, like created, updated, or deleted.


Define your signal by initialzing an object from Signal class.

var Signal = require("nsignal");
var post_save = new Signal({providing_args: ["instance"]});

Register signal receivers in your proper module.

var SomeModel = require("/path/to/model");

post_save.connect(SomeModel, function(sender, args, done) {
    console.log("Handle signal here");
    done(null, true);

// Other receivers
// ...

done must be called at each exit point within the receiver function. Function done follows Node callback convention,

Send signal at some point.

post_save.send(savedObject, {"instance": savedObject});

where savedObject is the object of SomeModel and just be saved. As an example, the args passes instance only, which has the same value with the first argument of method send. Of course, you can pass any arguments through the second argument, as long as they satisfy the arguments specified while defining post_save.

If you want to handle the result, pass a callback function as the last argument.

post_save.send(savedObject, {"instance": savedObject}, function(err, results) {
    console.log(">>>", results);

where argument err will be always null, and results is an object of Array containing each receiver's result and potential error object.