sails.js - 在sails JS中链接控制器动作 - 动作2格式
问题描述
我试图在 Sails JS 中以较新的动作 2 格式将几个控制器动作链接在一起。我不能让他们两个都开火。
这就是我想要完成的事情:
// config/routes.js
'POST /api/v1/slack/slash': [
{ action: 'slack/slash/action1', csrf: false },
{ action: 'slack/slash/action2', csrf: false }
],
上面的格式返回 404。
我也试过这个:
'POST /api/v1/slack/slash': [ 'slack/slash/action1', 'slack/slash/action2' ],
在这种格式中,第一个动作运行,但不是第二个。此外,我必须禁用整个应用程序的 CSRF,而不仅仅是该路由。
我只能以旧的 actions1 格式找到有关如何执行此操作的文档。
有人知道吗?
解决方案
您可能需要改用策略:
https://sailsjs.com/documentation/concepts/policies
检查部分Policy ordering and precedence
:
你可以定义:
// config/policies.js
module.exports.policies = {
'path/to-controller/*': ['policy-one', 'policy-two']
}
在您的政策中:
// api/policies/policy-one
module.exports = async function (req, res, next) {
// First process
next();
}
第二个:
// api/policies/second-one
module.exports = async function (req, res, next) {
// Second process
next();
}
为此,您需要定义一个路由和一个控制器端点。
module.exports.routes = {
'POST /api/v1/slack/slash': { action: 'slack/slash' }
// action2 controller: api/controllers/slack/slash.js
}
和控制器:
// api/controllers/slack/slash.js
module.exports = {
inputs: { /* ... */},
exits: { /* ... */},
fn: function (/*inputs, exits, env*/) {
return 'Hello world'
}
}
推荐阅读
- php - mysql准备的Select语句加入不起作用
- c++ - 具有单个参数的 std::min() 的实现是什么?
- vue.js - vuetify 是否默认在单击后保持按钮的活动状态?你如何删除这个?
- android - Android - 切换到上次打开的外部应用程序活动
- sqlite - 如何在sqlite上格式化日期?
- php - 我尝试将删除按钮标签替换为锚标签,但没有成功
- reactjs - ReactJS 挂钩 useContext 问题
- javascript - 加载 javascript 时文本生涩
- javascript - 完整日历中同一日期的多个事件问题
- javascript - 将 Axios 响应作为 prop 发送到组件