Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling super method in sails.js controller

When I create a controller in sails.js with some standard method redefined, how do I call default parent method of this controller?

module.exports = {
    create: function(req, res) {
        //test some parameters   
        if (condition) {
            //call regular super method, proceed as usual
            //_super(); <- how to do this?
        } else {
            //do some other things
        }
    }
};
like image 633
alevkon Avatar asked Aug 07 '13 17:08

alevkon


1 Answers

Update: for Sails >= v0.10.x, see the comment below from @naor-biton

If you want to access the default implementation (the blueprint), as of v0.9.3, you can call next() (the third argument to your controller). This is because Sails is based on the Express/Connect concept of middleware, allowing you to chain things together.

Please note that this behavior may change in a subsequent version, since next() is also how you call your default 404 handler (config/404.js) for actions which don't have a blueprint underneath them.

A better approach, if you're interested in using the blueprints but running a bit of logic beforehand, is to leave the controller action undefined and use one or more policies, which will be run beforehand.

like image 76
mikermcneil Avatar answered Sep 26 '22 06:09

mikermcneil