我正在开发一个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'是控制器名称的关键字,还有一个用于操作名称吗?
答案 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);
});
});