正如标题所示,我想在Sails Js中为同一路径在不同的控制器中分配多个动作处理程序
我尝试过:
"post /rest/users": [{
controller: "FirstController",
action: "someAction"
},
{
controller: "SecondController",
action: "otherAction"
}]
但是这给了我Sails中的错误51,并且没有达到任何操作(调试时)。我搜索了这个解决方案,但我找不到一些东西。
我知道Sails使用Express的路由中间件,我发现可以通过以下路由在Express中完成:
app.post('/users', createUser, saveToDB, endTheResponse, sendEmail);
我知道一些可能的解决方法(比如需要第一个中的控制器),但这不是我正在寻找的,我无法将Express示例路由调整为Sails one。
欢迎任何建议!感谢。
答案 0 :(得分:10)
好的,在搜索超过1周后,我找到了解决方案here。所以每个处理这个问题并且在调用多个控制器时遇到问题的人都可以实现这一目标。从要点:
路由现在可以指定目标列表,这些目标将按顺序运行 (这允许将中间件的链直接绑定到路由)。 两个控制器(controller.action)和任意middleare (中间件)功能来自新的,可选的中间件目录即可 按任何顺序指定:
{
'post /signup': ['user.unique', 'user.create', 'verifyemail.send'],
'/auth/logout': ['authenticated', 'auth.logout']
}
您还可以使用经典
{controller: 'foo', action: 'bar' }
符号。方便的是,杂项字符串被视为 重定向:
{
// Alias '/logout' to '/auth/logout'
'get /logout': '/auth/logout',
'/thegoogle': 'http://google.com'
}