sails.js - Sail.js - 路由到方法、自定义策略和 PATCH 方法

标签 sails.js

我有几个问题无法在网上找到答案。

  1. sails.js 框架是否支持 HTTP PATCH 方法?如果没有 - 有人知道将来是否有计划的功能吗?

  2. 默认情况下,如果我在 Controller 中创建方法,它可以通过 GET 请求访问,我是否需要在 routes.js 文件中指定该方法只能通过 POST 或其他类型的方法访问?

  3. 您将如何创建一个策略,允许仅针对具有特定权限的用户更改实体上的 protected 字段。即:创建实体的用户可以更改“名称”、“描述”字段,但不能更改“评论”数组,除非用户是 ADMIN?

  4. 如何将自定义 header 添加到“查找”方法以指定数据库中有多少项?即:我有/api/posts/并且我查询查找特定项目 {skip: 20; limit: 20} 我想得到那些项目的响应,以及在没有 SKIP 和 LIMIT 修饰符的情况下匹配查询的项目总数。我想到的一件事是,添加自定义 header 的策略是一个不错的选择,但也许还有更好的选择。

  5. 有没有什么方法可以编写一个在向客户端发送响应之前执行的中间件。即:我只想过滤输出 JSON 以不包含某些值或添加我自己的值而不触及 Controller 方法。

提前致谢

最佳答案

我可以帮助解决 2 和 5。根据我自己的经验,这是我所做的:

2) 我通常只检查 Controller 中的req.method。如果这不是我想要支持的方法,我会使用 404 页面进行响应。例如:

    module.exports = {
        myAction: function(req, res){
            if (req.method != 'POST')
                return res.notFound();

            // Desired controller action logic here
        }
    }

5) 当我想这样做时,我在 api/services 中创建服务。您在服务中定义接受回调作为参数的函数,这样您就可以在服务函数执行完毕后从 Controller 发送响应。您可以通过文件名访问任何服务。例如,如果我在 api/services 中有 MyService.js,并且我需要它来处理请求主体,我会像这样向它添加一个函数:

exports.myServiceFunction = function(requestBody, callback){
    // Work with the request body and data access here to create
    // data to give back to the controller
    callback(data);
};

然后,我可以像这样从 Controller 使用这个服务:

    module.exports = {
        myAction: function(req, res){
            MyService.myServiceFunction(req.body, function(data){
                res.json(data);
            });
        }
    }

在您的情况下,服务通过回调发送回 Controller 的数据将是过滤后的 JSON。

很抱歉我无法回答您的其他问题,但我希望这对您有所帮助。我对 Sails.js 还是新手,并且在不断学习新事物,所以其他人可能会有更好的建议。不过,我希望我已经回答了您的两个问题。

关于sails.js - Sail.js - 路由到方法、自定义策略和 PATCH 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19786039/

相关文章:

sails.js - SailsJS 模型和迁移

javascript - Sails.js 水线破坏 "lower or equal"标准

javascript - 仅引导一次 Sails.js 应用程序

javascript - 如何在 Node 的 Sails.js 中使用 header 作为 session key 而不是 cookie

javascript - 在 Sails.js 中将数据从文件传输到渲染页面

jquery - Angular 在 jQuery Ajax 加载页面中不起作用

apache - Sails.js 应用程序可以在 Apache 中运行吗

javascript - 如何在 sails 应用程序中为 CSS 生成 map 文件?

mysql - fatal error : Could not load sails

node.js - 使用 req.param 获取 url 值