在所有控制器中添加前缀&帆船服务

时间:2014-04-22 06:08:38

标签: javascript node.js sails.js sails-mongo

我是节点&航行,同时在我的代码中做一些标准。在sails.js中我现在有这个,例如下面的

api/
  controllers/
    TestController.js
  services/
    TestServices.js

大多数情况下,我只能使用这种URL格式来访问视图:

http://localhost/test/
http://localhost/test/<action>

如果我在文件名中添加一些前缀,它将会是这样的:

api/
  controllers/
    PrtestController.js
  services/
    PrtestServices.js

右边的URL应该可以通过以下方式访问:

http://localhost/prtest/
http://localhost/prtest/<action>

问题:

1)如果我为我的所有控制器添加前缀&amp;服务文件名,是否可以通过以下方式访问URL:

http://localhost/test/
http://localhost/test/<action>

没有添加前缀?

我正在考虑配置config / routes.js,以便通过编辑类似的东西来实现这一点:

'/test': {
    controller: 'PrtestController',
    action: '<action>'
},
'/test/*': {
    controller: 'PrtestController'
} 

老实说,我还没有尝试过(在我对代码进行重大修改之前,这只是一个想法,否则我可能会搞砸了)

2)是否可以在sails.js

中使用它
PrtestController.js  >   prTestController.js

提前致谢!

编辑问题

顺便说一下,我使用默认的sails配置来控制值为:

的控制器
blueprints: {
actions: true,
rest: true,
shortcuts: true,
prefix: '' 
... 

} 示例:(我的routes.js看起来像这样)

'/test' : 'prTestController',
'/test/action2' : 'prTestController:action2',
'/test/action3' : 'prTestController:action3',
'/test/action4' : 'prTestController:action4',
'/test/action5' : 'prTestController:action5',
'/test/action6' : 'prTestController:action6',
'/test/action7' : 'prTestController:action7',
'/test/action8' : 'prTestController:action8',
'/test/action9' : 'prTestController:action9'

如果url有/ test或/ test / any_action的路由是否可以分别自动使用controller prTestController或prTestController:any_action?

对于#2,是的,这就是我的意思。

非常感谢!

1 个答案:

答案 0 :(得分:1)

  1. 是的,您必须编辑config/routes.js才能执行自定义路由
    如果您的控制器名为PrtestController,那么(如果已激活)蓝图将自动为您设置host/prtest/的路线。要覆盖它,请关闭蓝图,然后添加一些自定义路线 Sails docs on routes

    如果您在理解Sails中的魔法时遇到困难,我建议您关闭所有蓝图,或者至少使用不同的设置。通过执行此操作,您必须手动配置路由和操作。当您了解蓝图的作用及其原因时,如果您想使用蓝图,请将其重新打开。

    以下是video tutorial更详细地解释蓝图和路线。

  2. 不确定你的意思。你想知道是否允许小写的控制器名称?如果是的话,是的,这应该不是问题。