sailsjs获取控制器中的所有控制器名称和操作(方法)名称

时间:2016-11-01 02:31:57

标签: controller sails.js

我正在开发一个sailsjs项目,我需要在api文件夹中提取/查找所有可用的控制器。我还需要找到那些控制器中可用的所有动作(方法)。

获取控制器名称的愚蠢方法可能是转到目录并查找所有文件名,但我如何获取操作?我相信应该有一种更简单的方法/方法来获取控制器和动作名称?

编辑: 我可以通过执行以下操作来获取控制器名称:

getControllers: function(req,res){
  var _ = require('lodash');
  var controllerList = [];

  var controllers = _(sails.controllers).toArray().value();
  for (var i=0;i<controllers.length;i++){
    controllerList.push(controllers[i].globalId);
  }
  res.json({error:null, data:controllerList});
}

例如,如果我的控制器中有1个动作,当我尝试以下操作时,而不是返回1个结果,它返回4,结果是不可读的东西,我只需要动作的名称:

var actons = _(sails.controllers.controllerName).toArray().value();
for (var i=0;i<actions.length;i++){
  actionList.push(controllers[i].action);
}

我做错了吗?据我所知,大多数信息都存放在风帆中。我使用错误的关键字吗? 'sails.controllers..action'错了吗?搜索了很长时间后,我发现'globalId'是控制器名称的关键字,还有一个用于操作名称吗?

1 个答案:

答案 0 :(得分:2)

此代码将显示包含操作名称的所有控制器名称。现在你可以用它做任何你想做的事。

_.each(sails.controllers, function(controller, controllerId) {
    _.each(controller, function(action, actionId) {
        if (actionId != 'sails' || _.isString(action) || _.isBoolean(action) || action === false) {
            return;
        }
        console.log(controllerId + ' ' + actionId);

    });
});