【问题标题】:Chaining controller actions in sails JS - actions 2 format在sails JS中链接控制器动作 - 动作2格式
【发布时间】:2021-05-12 02:03:23
【问题描述】:

我正在尝试以 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 格式执行此操作的文档。

有人知道吗?

【问题讨论】:

标签: sails.js


【解决方案1】:

您可能需要改用策略:

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'
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多