【问题标题】:Adding prefix in all controllers & services in sails在 Sails 的所有控制器和服务中添加前缀
【发布时间】:2014-04-22 06:08:38
【问题描述】:

嗨,我是 node 和sails 的新手,同时在我的代码中做一些标准。在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) 如果我为所有控制器和服务文件名添加前缀,是否可以通过以下方式访问 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 将自动使用控制器 prTestController 或 prTestController:any_action 的路由是否可能?

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

非常感谢!

【问题讨论】:

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


    【解决方案1】:
    1. 是的,您必须编辑 config/routes.js 才能执行自定义路由
      如果您的控制器名为 PrtestController,那么(如果激活)蓝图将自动设置一条通往host/prtest/的路线。要覆盖这一点,请关闭蓝图并添加一些自定义路由。
      Sails docs on routes

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

      这里是video tutorial,更详细地解释了蓝图和路线。

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

    【讨论】:

    • 您好,感谢您的回复。对于#1,有没有不改变路线的解决方案?因为让我说我有 10 个控制器和 10 个不同的操作,所以在我的 routes.js 中我将至少有 100 个条目用于手动路由?示例: '/test' : 'prTestController', '/test/index2' : 'prTestController:index2', ... '/test/index9' : 'prTestController:index9' 如果 url 具有/test 或 /test/ 会分别自动使用控制器 prTestController 或 prTestController:
    • @Nina 我不确定。我自己没有测试过,所以我猜你只需要尝试一下即可:) 恐怕你必须全部都做,当你关闭蓝图时。
    • 好的,非常感谢您抽出宝贵的时间 :) 很多人都非常痛苦,哈哈 8)
    猜你喜欢
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多