Create subfolders in Sails.js /api/controllers

2019-01-26 09:27发布

here is my problem: I would like to create some subfolders inside /api/controllers in order to organize my source code. My problem there is that as soon as I create a new folder, blueprint api / routes / actions don't seem to work anymore.

From all my tests if I change /api/controller/UserController.js to /api/controller/newpath/UserController.js I can't get the beauty of blueprint working anymore.

Is there any way to do that?

Thanks Emmanuel

4条回答
闹够了就滚
2楼-- · 2019-01-26 10:05

You can set this up. Its a bit undocumented, but you can setup a "_config" object on your controller

api/controllers/subFolder/YourController.js
...
module.exports = {
  _config: {
    model: 'YourModel' // case sensitive
    actions: true,
    shortcuts: true,
    rest: true
  }
}

Check out this answer https://stackoverflow.com/a/22062367/1821723

查看更多
爷的心禁止访问
3楼-- · 2019-01-26 10:07

Update January 2016

Since version 0.10.0, you can definitely do this.

The controller identity is its path, in your case newPath/UserController. So a custom route config/routes.js would be something like:

'GET /newPath/user': 'newPath/UserController'

Automatic actions still work. You can also create controllers like this with sails generate controller newPath/user.

查看更多
Explosion°爆炸
4楼-- · 2019-01-26 10:08

You're right. It doesn't work out of the box though you can try this approach:

In you models/User.js set identity: "newpath/user"

Hope it helps!

查看更多
够拽才男人
5楼-- · 2019-01-26 10:19

You can config routes.js as below

//application
'post /:api_key/applications'         : 'Threescale.Application.create',
'get /:api_key/check_api_key'         : 'Threescale.Application.check',
'get /:token/manager_list_accounts'   : 'Threescale.Account.list',
'put /:token/manager_approve_account' : 'Threescale.User.activate', 

Under api/controllers, you can manage sub folders and actions as:

Threescale
    Application
        - create.js
        - check.js
    Account
        - list.js
    User
        - activate.js

Hope this is helpful for you!

查看更多
登录 后发表回答