为同一路径执行多个处理程序

eAb*_*Abi 2 node.js express sails.js

正如标题所示,我想在不同的控制器中为Sails Js中的相同路径分配多个动作处理程序

我尝试过的:

"post /rest/users": [{
    controller: "FirstController",
    action: "someAction"
},
{
    controller: "SecondController",
    action: "otherAction"
}]
Run Code Online (Sandbox Code Playgroud)

但是这给了我Sails中的错误51,并且没有达到任何操作(调试时).我搜索了这个解决方案,但我找不到一些东西.

我知道Sails使用Express的路由中间件,我发现可以通过以下路由在Express中完成:

app.post('/users', createUser, saveToDB, endTheResponse, sendEmail);
Run Code Online (Sandbox Code Playgroud)

我知道一些可能的解决方法(比如在第一个中要求控制器),但这不是我正在寻找的,我无法使Express示例路由适应Sails one.

欢迎任何建议!谢谢.

eAb*_*Abi 10

好的,搜索了一周以上,我在这里找到了解决方案.所以每个处理这个问题并且在调用多个控制器时遇到问题的人都可以实现这一目标.从要点:

路由现在可以指定目标列表,这些目标将按顺序运行(这允许将中间件链接到路由链接).可以按任何顺序指定新的可选中间件目录中的控制器(controller.action)和任意middleare(中间件)函数:

{
    'post /signup': ['user.unique', 'user.create', 'verifyemail.send'],
    '/auth/logout': ['authenticated', 'auth.logout']
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用经典{controller: 'foo', action: 'bar' } 表示法.方便地,杂项字符串被视为重定向:

{
    // Alias '/logout' to '/auth/logout'
    'get /logout': '/auth/logout',
    '/thegoogle': 'http://google.com'
}
Run Code Online (Sandbox Code Playgroud)