在sails.js控制器中调用super方法

ale*_*kon 10 javascript inheritance node.js sails.js

当我在sails.js中创建一个控制器并重新定义了一些标准方法时,如何调用该控制器的默认父方法?

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
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

mik*_*eil 8

更新:对于Sails> = v0.10.x,请参阅以下来自@ naor-biton 的评论

如果要访问默认实现(蓝图),从v0.9.3开始,可以调用next()(控制器的第三个参数).这是因为Sails基于中间件的Express/Connect概念,允许您将事物链接在一起.

请注意,此行为可能会在后续版本中发生更改,因为next()您还可以调用默认404处理程序(config/404.js)以获取其下没有蓝图的操作.

如果您对使用蓝图感兴趣但事先运行一些逻辑,则更好的方法是保持控制器操作未定义并使用一个或多个策略,这些策略将事先运行.

  • 如何要求默认蓝图并调用它们呢?`var create = require('sails/lib/hooks/blueprints/actions/create');`...`create:function(req,res){/*做一些东西......*/create(req,res) ); }` (7认同)
  • 顺便说一句,它没有按预期工作.当我使用空控制器时,POST请求成功创建了一个模型.但是当我使用这样的东西时,没有任何反应,并返回空响应.`module.exports = {create:function(req,res,next){next(); } (2认同)
  • @NaorBiton谢谢你的想法,你救了我. (2认同)