我有几个问题无法在网上找到答案。
sails.js 框架是否支持 HTTP PATCH 方法?如果没有 - 有人知道将来是否有计划的功能吗?
默认情况下,如果我在 Controller 中创建方法,它可以通过 GET 请求访问,我是否需要在 routes.js 文件中指定该方法只能通过 POST 或其他类型的方法访问?
您将如何创建一个策略,允许仅针对具有特定权限的用户更改实体上的 protected 字段。即:创建实体的用户可以更改“名称”、“描述”字段,但不能更改“评论”数组,除非用户是 ADMIN?
如何将自定义 header 添加到“查找”方法以指定数据库中有多少项?即:我有/api/posts/并且我查询查找特定项目 {skip: 20; limit: 20} 我想得到那些项目的响应,以及在没有 SKIP 和 LIMIT 修饰符的情况下匹配查询的项目总数。我想到的一件事是,添加自定义 header 的策略是一个不错的选择,但也许还有更好的选择。
有没有什么方法可以编写一个在向客户端发送响应之前执行的中间件。即:我只想过滤输出 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/